因此,为了减少重复,我将图像附件从产品模型中分离到图像模型上,以便类似的产品可以共享图像。像这样
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
我想要做的是如果我正在编辑产品,我想在保存之前检查图像是否已更改。如果图像已更改,我不想更新现有记录,我想创建一个新记录,因为旧图像可能被多个产品使用。
有没有办法做到这一点?我很难过。
答案 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?
}
完美地为我工作。希望它有所帮助