У меня есть модель User
, которая имеет много projects
и модель Project
, которая может иметь много users
, но также принадлежит одному пользователю (то есть пользователю, создавшему этот проект). Он должен принадлежать User
. Это также позволяет списку пользователей быть связанным с ним, думаю, сотрудничество.
Учитывая это, мои модели выглядят так:
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')
Теперь я знаю, что projects
предоставляется через AssignedProject
модель соединения, поэтому project.user
вернет nil
. То, что я изо всех сил пытаюсь понять, это лучший способ назначить создателя проекта (которому, кстати, не нужно , нужно , чтобы быть user
, это может быть creator
или что-то еще описательное До тех пор, пока он имеет тип User
).
Идея состоит в том, чтобы создать метод для возврата projects_created
из User
, который будет выбирать только проекты, созданные этим пользователем. Где user.projects
, конечно, вернет ВСЕ проекты, с которыми связан пользователь.
Предполагая, что такого рода ассоциации довольно распространены, как лучше всего достичь того, чего я хочу? Любое направление очень ценится.