【发布时间】:2014-06-10 14:00:22
【问题描述】:
我无法让这个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_... 参数已通过,但没有任何内容被删除:
... "remove_banner"=>"1" ...
有什么想法吗?谢谢。
更新
即使把它简化成这样也行不通:
after_validation { banner.clear if remove_banner == '1' }
"remove_banner"=>"1" 在参数中通过。 u.banner.clear 然后 u.banner.save 在控制台中可以正常工作。
【问题讨论】:
-
当你
destroy#{a}.to_sym - 数据存储在哪里?它已经在数据库中,还是参数哈希的一部分? -
#{a}代表模型中的每个回形针附件。
标签: ruby-on-rails ruby-on-rails-3 paperclip before-save