我試圖建立兩個模型,Client
和Address
作爲has_one
:billing_address
之間通過HAS_ONE有直接關係,但Client
沒有直接關係Address
,Contact
確實,型號:軌道4 HAS_ONE通過與where子句
客戶
class Client < ActiveRecord::Base
belongs_to :contact
accepts_nested_attributes_for :contact
end
聯繫
class Contact < ActiveRecord::Base
has_one :client
has_many :addresses, dependent: :destroy
accepts_nested_attributes_for :addresses, allow_destroy: true
end
地址
class Address < ActiveRecord::Base
belongs_to :contact
enum kind: [:address, :shipping, :billing]
end
所以我要的是能夠做Client.shipping_address
或Client.billing_address
,在enum
在Address
模型是什麼將允許查詢。背後的原因是因爲Client
的Contact
將有兩個地址記錄,一個用於計費和一個用於運輸和我想通過關係快速訪問
我在客戶端模式的嘗試:
has_one(:billing_address, -> { where(kind: :billing) }, class_name: Address, through: :contact)
但是,當在視圖I O:
client.billing_address
我得到一個undefined method to_sym' for nil:NilClass
我似乎無法化解它, 謝謝。
你在用什麼數據庫? – mahatmanich