2015-10-25 3 views
1

У меня есть пользователи. Каждый пользователь может создать путешествие. Когда пользователь создает путешествие, другие пользователи могут присоединиться к юристу. Как правильно создавать ассоциации?Rails has_many ассоциации с обеих сторон

В user_model:
has_many :journeys
В journey_model:
belong_to :user
Могу ли я добавить к journey_model: has_many :users?

+1

Посмотрите на [has_and_belongs_to_many] (http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_and_belongs_to_many) – Willem

+0

@willem, спасибо. Но как создать миграцию? –

+2

Ознакомьтесь с учебником [HABTM] (http://puneetpandey.com/tag/rails-4-habtm-tutorial/). – Willem

ответ

3
#app/models/user.rb 
class User < ActiveRecord::Base 
    has_many :created_journeys, class_name: "Journey", foreign_key: :user_id 
    has_and_belongs_to_many :journeys 
end 

#Need a table journeys_users - journey_id | user_id 

#app/models/journey.rb 
class Journey < ActiveRecord::Base 
    belongs_to :owner, class_name: "User", foreign_key: :user_id 
    has_and_belongs_to_many :users 
end 

Это позволит вам назвать следующие:

@user = User.find params[:user_id] 
@journey = @user.journeys.find params[:id] 

@journey << current_user 

Многие ко многим

Суть вашего вопроса является то, что вы ищете много-ко многим ассоциации.

Это происходит в двух вариантах:

Обе эти работы для обеспечения аналогичного результата, просто по-разному:

enter image description here

Я могу объяснить больше, если потребуется.

+0

что означает: created_journeys in has_many? Это атрибут или столбец в таблице? –

+0

Это ваша текущая ассоциация - каждое 'путешествие' принадлежит' user', поэтому каждый 'user' has_many' travels' –

Смежные вопросы