回形针,before_save和删除附件

好的

我无法使用此before_save过滤器。我认为我的方法很标准。图像通过回形针上传。

before_save :remove_checked_attachments

def attachments
  %w(banner footer logo accreditation)
end

private

def remove_checked_attachments
  attachments.each do |a|
    if "remove_#{a}".to_sym && !"#{a}_updated_at_changed?".to_sym
      "#{a}".to_sym.destroy
    end
  end
end

remove_...PARAMS都通过了,什么也没有删除,但:

... "remove_banner"=>"1" ...

有什么想法吗?谢谢。

更新资料

即使将其简化为这样也无法正常工作:

after_validation { banner.clear if remove_banner == '1' }

"remove_banner"=>"1"通过参数。u.banner.clear随后u.banner.save的工作在控制台罚款。

好的

我已经解决了这个问题,方法如下:

# must be included after attachment declarations in model
module RemoveAttachment
  extend ActiveSupport::Concern

  included do
    attachment_definitions.keys.each do |name|

      attr_accessible :"remove_#{name}"
      attr_accessor :"remove_#{name}"

      before_validation { send(name).destroy if send("remove_#{name}") == '1' }

      define_method :"remove_#{name}=" do |value|
        instance_variable_set :"@remove_#{name}", value
        send("#{name}_file_name_will_change!")
      end

    end
  end
end

并且仅在需要的地方包括关注点。多亏了这个答案,我们才有了巨大的线索。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Rails:`before_save`会干扰`save?`

来自分类Dev

Peewee ORM中的before_save()和after_save()挂钩?

来自分类Dev

使用实时实体的before_save和after_save之间的区别

来自分类Dev

Peewee ORM中的before_save()和after_save()挂钩?

来自分类Dev

了解Ruby / Rails中的before_save

来自分类Dev

处理before_save导轨的智能方法

来自分类Dev

before_save,去除字符串

来自分类Dev

Ruby on Rails:before_save字段小写

来自分类Dev

Smart way to handle before_save rails

来自分类Dev

验证后是否运行before_save?

来自分类Dev

在before_save中设置参数

来自分类Dev

模型before_save中的变量范围

来自分类Dev

Rails before_save无法正常工作

来自分类Dev

Before_save不运行滑轨4

来自分类Dev

多次创建 before_save 调用

来自分类Dev

回形针删除更新时现有的附件

来自分类Dev

回形针附件销毁后不会被删除

来自分类Dev

Ruby on Rails:在更新时在回形针中删除多个附件

来自分类Dev

回形针删除更新时现有的附件

来自分类Dev

具有嵌套属性创建的模型更改了before_validation和before_save之间的关联类型属性

来自分类Dev

回形针配置| 旧附件

来自分类Dev

在相关模型中的属性更改后运行before_save

来自分类Dev

Rails:为什么调用parent上的before_save?

来自分类Dev

在Rails before_save方法中大写多个属性

来自分类Dev

before_save是否为attribute.present?

来自分类Dev

Rails-在before_save中获取旧值

来自分类Dev

Rails:before_save大写私有方法

来自分类Dev

在rails 6上未触发before_save回调

来自分类Dev

如何验证在before_save中更改的数据