如何在不使用不同变量名的情况下更新rails模型中实例方法中的属性?

时间:2011-08-17 12:26:41

标签: ruby-on-rails ruby ruby-on-rails-3

我想在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

我理解这个例子并不重要。但是当我有复杂的更新方法时,如果我可以删除一些代码,那将会更加清晰。

1 个答案:

答案 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

Update_attribute doc.

Update_attributes doc.