在模型中设置属性

时间:2011-02-05 18:12:13

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

所以我有一个应用程序,只需要一些RSS源并将它们存储在一个表中。它会检查每个条目中的几个条件,然后根据条件设置属性。

if self.value1 > self.value2 then
    :status => 'foo'
else
    :status => 'bar'
end

我仍然是Ruby / Rails的一个菜鸟,设置状态导致异常,但我不知道为什么。

任何帮助都会很棒。

2 个答案:

答案 0 :(得分:3)

当你说“设置属性”时,我认为你的意思是这是桌面上的另一列。如果是这样,这应该有效:

if self.value1 > self.value2
    update_attribute :status, "foo"
else
    update_attribute :status, "bar"
end

实例化对象或更新多个属性(:this => "that")时使用“rocket”表示法(self.update_attributes :animal => "kitten", :sound => "Roar!")。这是Hash使用的符号。

您也可以使用status = "foo",但这会设置属性而不保存,因此您还必须致电self.saveupdate_attribute在一个整洁的包中做到了。

答案 1 :(得分:0)

在Rails 4中,我使用了以下方法:

def update_test
  if self.value1 > self.value2
      self.status="foo"
  else
      self.status= "bar"
  end
end

并在模型中添加了before_update过滤器。

before_update :update_test, :if => :test_changed?

在这个方法中,我们不需要调用save或update_attributes,这将在一个查询中完成。

相关问题