如果在rails中更改了同一模型的其他属性,则自动删除模型属性

时间:2015-03-11 17:20:56

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

所以我想在同一模型的特定其他属性发生变化时自动删除模型属性。

我有一个名为profile的rails模型,它有一个picture属性,其中包含图像存储中图像的URL。此外,该模型还有一个crop_data属性,其中包含要呈现给用户的部分图像信息,该信息可由用户设置,默认为profile.crop_data? # => false

如果profile.picture属性已更改或已删除/重置

profile.crop_data? # should return false 

并在数据库中重置为默认值。

实现这一目标的最简洁方法是什么?很抱歉,我们仍在运行Rails 3.2.21

1 个答案:

答案 0 :(得分:1)

您可以使用之前的保存回调:

class Profile
  before_save :check_crop_data


  def check_crop_data
    if self.changed_attributes.has_key?(:profile_picture) 
      self.crop_data = true
    elsif picture.nil?
      self.crop_data = false
    end
  end
end