我想在rails中的实例方法中更新属性,而不必强制更改传入的参数,以便我可以利用rails自动属性。这是一个例子。
理想:
status = "some_new_status"
person.update(status)
class Person < ActiveRecord::Base
def update(status)
self.status = status
end
end
我现在要做的是:
class Person < ActiveRecord::Base
def update(new_status)
self.status = new_status
self.save
end
end
我理解这个例子并不重要。但是当我有复杂的更新方法时,如果我可以删除一些代码,那将会更加清晰。
答案 0 :(得分:19)
您应该使用builtin Rails方法:
@person.update_attribute(:status, "Some Value") #no callback triggered nor validation
@person.update_attributes(:status => "Some Value") #can pass multiple values
或者保留简短的语法
def update(status)
update_attribute(:status, status)
end