我有一个名为House
的模型,我希望能够将房屋相互关联以显示建议。
所以我希望有一所房子,我应该能够问:house.recommended_houses
。可以推荐一栋房子供不止一栋房子使用。
我正在考虑建立一个可存储此关联的表格(我还不知道该名称),因此它将包含以下列:
recommended_house_id
recommended_for_house_id
我无法理解如何将其与我的House
模型联系起来。这些关联会是什么样的,以及我应该为该连接模型使用什么名称?
答案 0 :(得分:0)
这应该让你开始:
class House < ApplicationRecord
has_and_belongs_to_many :recommendations,
class_name: "House",
foreign_key: "recommended_by_id",
association_foreign_key: "recommendation_id"
end
答案 1 :(得分:0)
您所描述的内容称为自引用关联。
您可以设置连接表(推荐)和相关模型:
class Recommendation < ActiveRecord::Base
belongs_to :house
belongs_to :recommended_house, :class_name => 'House'
end
然后使用has_many,:通过House模型中的关系来设置您正在寻找的关系。
class House < ActiveRecord::Base
has_many :recommendations
has_many :recommended_houses, :through => :recommendations
has_many :inverse_recommendations, :class_name => "Recommendation", :foreign_key => "recommended_house_id"
has_many :recommended_by_houses, :through => :inverse_recommendations, :source => :house
end
现在,您可以同时使用house.recommended_houses
和house.recommended_by_houses
。