Как создать следующую модель в Rails 3.2? В проекте могут быть 1+ владельцев и 1+ пользователей. Оба они являются экземплярами класса Person. Я думал о has_and_belongs_to_many
, но я не знаю, как обрабатывать две отдельные коллекции Персон для каждого Проекта.Названо многими из многих отношений в Rails
0
A
ответ
0
Вам потребуется объединение модели для представления каждых has-and-belongs-to-many
отношений, и вы бы получить доступ с помощью has-many-through
, как описано here:
class ProjectOwnerLink < ActiveRecord::Base
belongs_to :project
belongs_to :owner, class_name: 'Person'
end
class ProjectUserLink < ActiveRecord::Base
belongs_to :project
belongs_to :user, class_name: 'Person'
end
class Project < ActiveRecord::Base
has_many :project_owner_links
has_many :owners, :through => :project_owner_links
has_many :project_user_links
has_many :users, :through => :project_user_links
end
class Person < ActiveRecord::Base
has_many :project_owner_links
has_many :owned_projects, :through => :project_owner_links, :source => :project
has_many :project_user_links
has_many :used_projects, :through => :project_user_links, :source => :project
end
0
Вы можете определить другую модель Participation
, удерживающую тип отношений, т.е. роль пользователя. (Непроверенная) Код:
class Project < ActiveRecord::Base
has_many :participations
has_many :users, :through => :participations
def with_role(role)
includes(:participations).where('participation.role = ?', role)
end
def owners
users.with_role('owner')
end
def participants
users.with_role('participant')
end
end
class User < ActiveRecord::Base
has_many :participations
has_many :projects, :through => :participations
def with_role(role)
includes(:participations).where('participation.role = ?', role)
end
def projects_owned
projects.with_role('owner')
end
def projects_participating_in
projects.with_role('participant')
end
end
class Participation < ActiveRecord::Base
# has an attribute 'role'
belongs_to :project
belongs_to :user
end
0
Ниже демонстрационное приложение.
https://github.com/diatmpravin/habtm-demo.git
Пожалуйста, смотрите, дайте мне знать, если у вас есть какие-либо вопросы?
Смежные вопросы
- 1. Взаимодействие с многими из многих отношений laravel
- 2. От многих до многих отношений в Rails
- 3. От многих до многих отношений. Rails.
- 4. org.hibernate.PropertyAccessException: со многими для многих отношений
- 5. Показать вид со многими для многих отношений
- 6. Добавить со многими для многих отношений
- 7. Вставка со многими для многих отношений
- 8. Управление многими из многих отношений в asp.net Wizard Control
- 9. Список данных из таблицы, созданной многими для многих отношений hibernate
- 10. Автозаполнение ассоциации с вложенными атрибутами и многими из многих отношений
- 11. Работа с многими из многих отношений через сводную таблицу
- 12. Несколько Rails для многих отношений
- 13. Работа со многими для многих отношений в рельсах 4
- 14. Как сохранить тег со многими для многих отношений в ActiveRecord
- 15. Работа со многими для многих отношений в sql
- 16. Реорганизация многих из многих отношений в Django
- 17. От многих до многих отношений
- 18. Взаимодействие с многими из многих в Ruby on Rails
- 19. Расширенный поиск с многими для многих отношений в laravel
- 20. Яркая загрузка со многими для многих отношений в laravel 4
- 21. best_in_place со многими для многих отношений в рельсах 4
- 22. Как загрузить изображение в форму со многими для многих отношений?
- 23. Дисплей многих-многих отношений
- 24. Entity Framework со многими для многих отношений generetad tables
- 25. От многих до многих отношений в ddd
- 26. jax-b xml обратная ссылка со многими для многих отношений
- 27. Поиск модели со многими для многих полиморфных отношений
- 28. Использовать общую таблицу со многими для многих отношений
- 29. Hibernate/JPA Коллекция элементов со многими для многих отношений?
- 30. Присоединяйтесь к двум таблицам со многими для многих отношений