调用Model.create时,覆盖initialize方法的正确方法是什么?

时间:2012-12-26 01:52:14

标签: ruby activerecord

调用initialize时覆盖Model.create方法的正确方法是什么?我试过了:

Model < ActiveRecord::Base
  def initialize params, foo

打算像这样调用它:

Model.create foo:'bar'

不使用Rails,而是使用ActiveRecord。

2 个答案:

答案 0 :(得分:3)

最好远离那条道路!

如果您需要不同的行为来创建模型对象,只需创建一个不同的方法,如:

class Model < ActiveRecord::Base
  def self.create_with_foo params, foo
    model = self.new params
    # Do whatever you want with foo for example
    model.foo = true if foo == :foo
    model.save
    model # return the created model object
  end
end

答案 1 :(得分:0)

foo: 'bar'是一个参数:哈希。它是{foo: 'bar'}的简写,这是{:foo => 'bar'}的简写。因此,如果您想要像这样使用它,您只需要定义它以便它需要一个参数。