我已經有了以下情況設置,可以爲具有多個地址和地址類型的引用表建模客戶。數據模型爲 客戶 - 地址:多對多關係,用名爲「位置」的連接表表示。
位置類型 - 位置:一對多,以便位置類型(例如'工作','家')可以有多個關聯到一個位置。在Rails中使用多對多嵌套模型
我試圖實現的是能夠簡單地找到客戶的所有「工作」地址或「交付」地址。同時避免其在連接表位置複製的文本
模型(一個或多個)的樣子:
class Address < ActiveRecord::Base
has_many :locations
has_many :customers, :through => :locations
end
class Customer < ActiveRecord::Base
has_many :locations
has_many :addresses, :through => :locations do
def special_location(loc)
find :all, :conditions => ['addr_type == ?', loc]
end
end
end
class Location < ActiveRecord::Base
belongs_to :address
belongs_to :customer
belongs_to :locationtype
end
class LocationType < ActiveRecord::Base
has_many :locations
end
本作的簡單的情況下工作正常:
@customer = Customer.find(1)
@customer.addresses # return all addresses
帶有' special_location(「string」)的特殊幫助方法'我可以達到結果。我想知道是我怎麼可能通過使用附加參考表(的locationType)沿
@customer.addresses.find_locationtype("work")
我忽略了地址與位置之間的一對多關係。達米恩馬修的解決方案更接近需要完成的任務。 – EmFi 2009-11-17 04:37:36