Ruby on rails 如何在ActiveRecord回调中设置属性?
这似乎是一个非常简单的问题……但请看:) 很简单,对吧 现在我想在一个极客被创造出来之后,创造出激光,所以新的极客模型看起来像这样Ruby on rails 如何在ActiveRecord回调中设置属性?,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,这似乎是一个非常简单的问题……但请看:) 很简单,对吧 现在我想在一个极客被创造出来之后,创造出激光,所以新的极客模型看起来像这样 Geek has_one :laser after_create :create_laser end 这真的很好,但我也喜欢为激光器的功率属性传递一个默认值,那么我该怎么做呢 创建后:创建激光(:功率=>5000) 不起作用:(但看起来不错:) 有没有人对此有一个好的、优雅的解决方案?当然有 正如您所知,回调只是方法名。因此,您可以在此处调用另一种方法来设置
Geek
has_one :laser
after_create :create_laser
end
这真的很好,但我也喜欢为激光器的功率属性传递一个默认值,那么我该怎么做呢
创建后:创建激光(:功率=>5000)
不起作用:(但看起来不错:)
有没有人对此有一个好的、优雅的解决方案?当然有
正如您所知,回调只是方法名。因此,您可以在此处调用另一种方法来设置并创建带有一些默认参数的激光器,而不是使用create_laser
。让我们称之为setup\u laser
并像这样使用它:
before_create :setup_laser
private
def setup_laser
create_laser(:power => 5000)
end
我们会在Geek
模型中这样定义它:
before_create :setup_laser
private
def setup_laser
create_laser(:power => 5000)
end