Rails在双方都有很多协会

时间:2015-10-25 16:30:40

标签: ruby-on-rails model associations

我有用户。每个用户都可以创造旅程。当用户创建旅程时,其他用户可以加入jorney。如何正确创建协会?

在user_model中:
has_many :journeys
在journey_model中:
belong_to :user
我可以添加到journey_model:has_many :users吗?

1 个答案:

答案 0 :(得分: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

如果需要,我可以解释更多。