我有一个通过嵌套表单构建的具有 has_many 关系的模型:
class User < ActiveRecord::Base
has_many :properties
accepts_nested_attributes_for :properties, allow_destroy: true
def billing_address
debugger
properties.find_by(billing_address: true)
end
end
总体而言,关系和嵌套形式有效。但是,如果我在创建过程中调用该方法billing_address
,则它返回 nil,即使存在一个将 billing_address 设置为 true 的嵌套属性。我在调试器中对此进行了试验,似乎调用properties.find_by
或properties.where
在创建期间总是导致 nil,即使参数与真实对象匹配。
当我输入properties
调试器时,我得到这样的结果,这清楚地表明有一个 billing_address 设置为 true 的属性:
#<ActiveRecord::Associations::CollectionProxy [#<User::Property id: nil, address: "1111 E 1st", city: "Austin", state: "TX", zip_code: "11111", phone_number: "11111111111", user_id: nil, primary: true, billing_address: true, created_at: nil, updated_at: nil>]>
那么为什么我不能通过诸如 的查询找到它properties.find_by(billing_address: true)
?是否有另一种获取这些数据的方法?