因此,我知道如何使用
def custom_getter
return self[:custom_getter] || some_default_value
end
我正试图实现同样的目标,然而,对于一个属于协会的组织来说.例如.
class Foo < AR
belongs_to :bar
def bar
return self[:bar] || Bar.last
end
end
class Bar < AR
has_one :foo
end
当我说:
f = Foo.last
我希望method f.bar
返回最后一个条,而不是nil,如果这个关联还不存在的话.
然而,这不起作用.原因是self[:bar]总是未定义的.它实际上是self[:bar_id].
我可以做一些天真的事情,比如:
def bar
if self[:bar_id]
return Bar.find(self[:bar_id])
else
return Bar.last
end
end
然而,这将始终进行db调用,即使已经获取了Bar,这肯定不是理想的.
有人知道我是如何建立一种关系的吗?这种关系使得"属于"属性只被加载一次,如果没有设置,则会有一个默认值.