В моем приложении есть модель User и модель Project. Пользователь имеет_ множество назначений, и каждый проект принадлежит_ пользователю. Но наряду с тем, что у каждого проекта есть владелец, пользователь, который его создал, я бы хотел, чтобы владелец мог поделиться им с другими (чтобы проект отображался в учетной записи других пользователей вместе с их собственной). Я представляю себе необходимость использования has_many: through и настройки таблицы projects_users с помощью user_id и project_id. И я думаю, это будет конечный результат?
Project.first.user
# The creator of the project
=> #<User id: 1, name: 'andrew', etc...>
Project.first.users
# The users that the creator chose to share it with
=> [#<User id: 2 ...>, #<User id: 3 ...>]
Я немного работал над этим и создал модель SharedProject со столбцами user_id и project_id:
class SharedProject < ActiveRecord::Base
belongs_to :user
belongs_to :project
end
Я хотел бы вызвать и user.projects, и user.shared_projects, но я не знаю, как бы получить shared_projects для возврата записей проекта вместо записей из таблицы shared_projects. Я не могу выполнить has_many :projects, :through => :shared_projects
с тех пор, как не смогу вернуть проекты, созданные пользователем.
class User < ActiveRecord::Base
has_many :projects # Calling user.projects returns the projects that user created
has_many :shared_projects # How to get user.shared_projects to return project records?
end