Когда вы говорите «устанавливает атрибут», я предполагаю, что вы имеете в виду, что это еще один столбец в таблице.Если это так, это должно работать:
if self.value1 > self.value2
update_attribute :status, "foo"
else
update_attribute :status, "bar"
end
Обозначение "ракета" (:this => "that"
) используется при создании экземпляра объекта или при обновлении более одного атрибута (self.update_attributes :animal => "kitten", :sound => "Roar!"
).Это нотация, которую использует Hash .
Вы также можете просто использовать status = "foo"
, но это установит атрибут без сохранения, поэтому вам также придется вызывать self.save
.update_attribute
делает оба в одной аккуратной упаковке.