initialize
调用时覆盖方法的正确方法是什么Model.create
?我试过了:
Model < ActiveRecord::Base
def initialize params, foo
打算这样称呼它:
Model.create foo:'bar'
不使用 Rails,而是使用 ActiveRecord。
initialize
调用时覆盖方法的正确方法是什么Model.create
?我试过了:
Model < ActiveRecord::Base
def initialize params, foo
打算这样称呼它:
Model.create foo:'bar'
不使用 Rails,而是使用 ActiveRecord。
最好远离那条路!
如果您需要不同的行为来创建模型对象,只需创建不同的方法,例如:
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
foo: 'bar'
是一个单一的参数:一个哈希。它是 的简写{foo: 'bar'}
,又是 的简写{:foo => 'bar'}
。所以如果你想这样使用它,你只需要定义它,让它接受一个参数。