2014-10-16 66 views
1

我有以下关联。 PropertyOwner是一个连接模型,属于一个属性,多态属于一个所有者,在下面的例子中是ForeclosureDefense。一切正常,直到我有了has_one:main_property。这个想法是ForeclosureDefense模型可以有很多特性,但是最后一个属性是主要的属性:不能有一个has_one:通过关联'其中:通过关联是一个集合

class ForeclosureDefense < ActiveRecord::Base 
    has_many :property_owners, as: :owner 
    has_many :properties, through: :property_owners 
    has_one :main_property, through: :property_owners, source: :property, order: 'created_at desc' 
end 

class PropertyOwner < ActiveRecord::Base 
    belongs_to :property 
    belongs_to :owner, polymorphic: :true 
end 

class Property < ActiveRecord::Base 
    has_many :property_owners 
    has_many :owners, through: :property_owners 
    has_many :foreclosure_owners, through: :property_owners, source: :owner, source_type: "ForeclosureDefense" 
    has_many :folder_owners, through: :property_owners, source: :owner, source_type: "Folder" 
end 

不幸的是,当我尝试使用HAS_ONE:main_property协会,我得到以下错误:

ActiveRecord :: HasOneThroughCantAssociateThroughCollection:不能有has_one:通过关联'ForeclosureDefense#main_property'其中:通过关联'ForeclosureDefense#property_owners'是一个集合。

我在做什么错?

回答

0

我的解决方案只是将其添加为一个类级别的宏:

def main_property 
    properties.order('created_at desc').first 
end