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