这似乎是一个非常简单的问题...但是看哪:)
Geek name:string
Laser geek_id:integer, power:integer
Geek
has_one :Laser
end
Laser
belongs_to :Geek
end
很简单,对吧?
现在我想在创建一个极客之后创建激光,所以新的Geek模型看起来像这样
Geek
has_one :laser
after_create :create_laser
end
这非常好用,但我也想为激光的power属性传递一个默认值,那我该怎么做呢?
after_create:create_laser(:power => 5000)
不起作用:(但看起来不错:)。
有没有人为此提供一个漂亮而优雅的解决方案?
答案 0 :(得分:1)
当然可以。
如您所知,您的回调只是方法名称。因此,您可以在此处调用另一种方法来设置和创建具有一些默认参数的激光,而不是在此处使用create_laser
。我们称之为setup_laser
并像这样使用它:
before_create :setup_laser
我们在Geek
模型中定义它:
private
def setup_laser
create_laser(:power => 5000)
end