调用initialize
时覆盖Model.create
方法的正确方法是什么?我试过了:
Model < ActiveRecord::Base
def initialize params, foo
打算像这样调用它:
Model.create foo:'bar'
不使用Rails,而是使用ActiveRecord。
答案 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'}
的简写。因此,如果您想要像这样使用它,您只需要定义它以便它需要一个参数。