如何设置在使用accepts_nested_attributes_for时拒绝现有记录的过滤器

时间:2010-10-15 14:23:32

标签: ruby-on-rails nested-attributes

我有一个Message and Source模型,如下所示:

class Message < ActiveRecord::Base
  has_many :sources
  accepts_nested_attributes_for :sources, :allow_destroy => true, :reject_if => proc{|s| s[:href].blank?}
end

class Source < ActiveRecord::Base
  belongs_to :outgoing_message
  validates_presence_of :href
end

当我提交表单(使用form_forfields_for构建)时,它会过滤掉任何带有空白href的来源。但我想要的是它删除任何已将其href设置为空白的现有源。有没有一种简单的方法可以做到这一点?

1 个答案:

答案 0 :(得分:1)

您好Message模型中的内容,您可以添加validates_associated :sources 如果您需要清除数据库中空白Message的所有:href记录,然后再保存新记录,则可以在控制器中编写

before_filter :some_filter, :only=>[:form_action]
...
def some_filter 
  Source.delete_all("href = '' OR href IS NULL")
end