Rails has_many 双方协会

Rails has_many associations at both sides

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

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

#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

多对多

问题的症结在于您正在寻找多对多关联。

这有两种口味:

这两种方法都可以提供相似的结果,只是方式不同:

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