我试图通过 has_one 在两个模型之间建立直接关系,Client
并且Address
与模型没有直接关系,has_one
:billing_address
但与模型没有直接关系:Client
Address
Contact
客户
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
or Client.billing_address
,模型enum
中的Address
是允许查询的。其背后的原因是,Contact
ofClient
将有两个地址记录,一个用于计费,一个用于运输,我希望通过关系快速访问
我在客户端模型中尝试过:
has_one(:billing_address, -> { where(kind: :billing) }, class_name: Address, through: :contact)
但是当在视图中时:
client.billing_address
我得到一个undefined method to_sym' for nil:NilClass
我似乎无法解决它,谢谢。