3

如何跳过基于虚拟属性的后期处理?

在 before_asset_post_process 回调中,我的虚拟属性始终为零

创造

attachment = Attachment.create(asset: File.open(file.png), :skip_thumb => 1)

可连接模型

class Attachment < AR::Base
 attr_accessor :skip_thumb

  has_attached_file :asset, :styles => lambda  { |attachment| { :thumb =>  ["100>", 'jpg'] ,
                                                                       :thumb_big =>   ["200>", 'jpg']
                                                                     }
  before_asset_post_process :proceed_or_cancel

  def proceed_or_cancel
    #self.skip_thumb is always nil
    if (self.skip_thumb.present?)
      return false 
    end
  end 

end
4

2 回答 2

0

的分配:asset将在分配之前发生,:skip_thumb如果它是您传递给的哈希中的第一个Attachment.create()。因此,如果您将代码更改为:

attachment = Attachment.create(skip_thumb: 1, asset: File.open(file.png))

我希望这还不算太晚...

于 2014-06-06T22:21:36.783 回答
0

attr_accessible在你的Attachment模型中使用吗?如果是这样,并且如果它不包括skip_thumb,当您尝试通过批量分配分配它时,它会失败(默默地)。

与它相反的attr_accessibleattr_protected,如果你skip_thumb在其中,请将其删除。

于 2012-11-02T21:22:47.460 回答