检查回形针附件是否已更改

时间:2015-01-29 09:23:59

标签: ruby-on-rails paperclip

因此,为了减少重复,我将图像附件从产品模型中分离到图像模型上,以便类似的产品可以共享图像。像这样

class Product < ActiveRecord::Base
    has_many :imaged_items
    has_many :images, :through => :imaged_items
end

class ImagedItems < ActiveRecord::Base
    belongs_to :product
    belongs_to :image
end

class Image < ActiveRecord::Base
    has_many :imaged_items
    has_many :products, :through => :imaged_items
end

我想要做的是如果我正在编辑产品,我想在保存之前检查图像是否已更改。如果图像已更改,我不想更新现有记录,我想创建一个新记录,因为旧图像可能被多个产品使用。

有没有办法做到这一点?我很难过。

2 个答案:

答案 0 :(得分:0)

通过Class: ActiveRecord::Dirty ...您可以使用changed

      person.changed # => []
      person.name = 'bob'
      person.changed # => ['name']

      ####OR ..other way as well         

      person.name = 'Bill'
      person.name_changed?  # => false
      person.name_change    # => nil

答案 1 :(得分:0)

我在after_update回调中遇到了问题,我使用.dirty?代替thumb_changed?

after_update :foo, if: Proc.new{
    |model| model.title_changed? || model.summary_changed? || model.thumb.dirty?
}

完美地为我工作。希望它有所帮助