如何链接在rails中具有多对多关系的模型?

时间:2016-08-04 06:54:31

标签: ruby-on-rails ruby-on-rails-4

我是RoR的新手,需要一些帮助。

我有2个主模型:

  1. 套间
  2. 设施
  3. 我有1个表(property_facility)链接父表, 一个公寓可以拥有很多设施,一个设施可以属于 对很多公寓来说,我试过这个:

    apt model:

      has_many :facilities, through: :property_facilities
    
      accepts_nested_attributes_for :property_facilities
    

    设施模型:

           has_many :apts, through: :property_facilities
    
          accepts_nested_attributes_for :property_facilities
    

    property_facility model:

           belongs_to :apt
          belongs_to :facility
    

    不知怎的,我不能让它工作,它给我一个错误

      

    找不到名称`property_facilities'的关联。它已被定义了吗?

    我正在使用rails 4.2.7

1 个答案:

答案 0 :(得分:1)

您应该接收associations,与模型名称相同,

每当模型具有一对多关系时,关联应该是复数名称。(例如:has_many)

对于一对一的关联应该是单一的名称。(例如:has_one,belongs_to)

Apt模型:

class Apt < ActiveRecord::Base

    has_many :property_facilities
    has_many :facilities, through: :property_facilities

    accepts_nested_attributes_for :property_facilities

end  

设施模型:

class Facility < ActiveRecord::Base

    has_many :property_facilities   
    has_many :apts, through: :property_facilities

    accepts_nested_attributes_for :property_facilities

end    

property_facility模型:

class PropertyFacility < ActiveRecord::Base

    belongs_to :apt

    belongs_to :facility

end