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
多对多
问题的症结在于您正在寻找多对多关联。
这有两种口味:
这两种方法都可以提供相似的结果,只是方式不同:
如果需要我可以解释更多。
我有用户。每个用户都可以创建旅程。当用户创建旅程时,其他用户可以加入旅程。如何正确创建关联?
在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
多对多
问题的症结在于您正在寻找多对多关联。
这有两种口味:
这两种方法都可以提供相似的结果,只是方式不同:
如果需要我可以解释更多。