В Rails их много, и они принадлежат одному

У меня есть модель User , в которой много проектов , и модель Project , у которой может быть много пользователей , но также принадлежит одному пользователю (то есть пользователю, создавшему этот проект). Он должен принадлежать пользователю . Это также позволяет связать с ним список пользователей, подумайте о сотрудничестве.

Имея это в виду, мои модели выглядят так:

class User < ActiveRecord::Base
  has_many :assigned_projects
  has_many :projects, :through => :assigned_projects
end

class Project < ActiveRecord::Base
  belongs_to :user
  has_many :assigned_projects
  has_many :users, :through => :assigned_projects
end

class AssignedProject < ActiveRecord::Base
  belongs_to :user
  belongs_to :project
end

Теперь, когда я хочу создать новый проект через User , я бы сделал это следующим образом:

user = User.create(:name => 'injekt')
user.projects.create(:name => 'project one')

Теперь я знаю, что проекты предоставляются через модель соединения AssignedProject , поэтому project.user вернет nil . То, что я изо всех сил пытаюсь понять, - это лучший способ назначить создателя проекта (который, кстати, не требует, чтобы был пользователем , это может быть creator или что-то другое описательное, если оно имеет тип User ).

Идея состоит в том, чтобы создать метод для возврата projects_created из Пользователь , который будет выбирать только проекты, созданные этим пользователем. Где user.projects , конечно, вернет ВСЕ проекты, с которыми связан пользователь.

Если предположить, что такая связь довольно распространена, как лучше всего достичь того, что я хочу? Любое направление приветствуется.

12
задан Lee Jarvis 30 June 2011 в 14:05
поделиться