所以我有这种模特关系
class User
has_one :wallet, :foreign_key => :user_id
end
class Wallet
after_initialize :set_value
def set_value
# Whatever
end
end
当我User.last.wallet
User.last.wallet.new
被User
召唤时,我会这样。
我可以通过在 def get_wallet
self.wallet||self.wallet.new
end
模型中创建另一种方法来实现这一目标:
get_wallet
并在需要时致电 has_one :wallet, :foreign_key => :user_id #, :build_if_not_found => true
。
但是如果没有这种无用而又脏的额外方法,我不能得到这个吗? 类似的东西:
Wallet
像这样的宝石:https://github.com/febuiles/auto_build没有做我想做的事情:他们在创建User
对象后构建User.last.wallet
而不是在调用{{1}}时创建。 / p>
由于
答案 0 :(得分:1)
你可以试试这个:
class User
has_one :wallet, :foreign_key => :user_id
def wallet
super || build_wallet
end
end
您仍然需要添加一些额外的代码,但它可以完全按照您的意愿执行,而无需任何额外的调用。