0

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

Model < ActiveRecord::Base
  def initialize params, foo

打算这样称呼它:

Model.create foo:'bar'

不使用 Rails,而是使用 ActiveRecord。

4

2 回答 2

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
于 2012-12-26T02:07:16.447 回答
0

foo: 'bar'是一个单一的参数:一个哈希。它是 的简写{foo: 'bar'},又是 的简写{:foo => 'bar'}。所以如果你想这样使用它,你只需要定义它,让它接受一个参数。

于 2012-12-26T02:07:29.940 回答