如何在运行验证之前删除Rails嵌套关联?

时间:2013-07-17 21:25:16

标签: ruby-on-rails ruby mongoid

我正在使用Mongoid和嵌入式文档。我使用标准方法来使用_destroy的隐藏表单字段,其值为1。这工作正常,除了运行验证程序,其中包括我试图删除的关联。例如:

class Thing
  include Mongoid::Document
  embeds_many :actions
  validate :uniqueness_of_actions

  def uniqueness_of_actions
    subjects = actions.map(&:subject)
    subjects_are_unique = subjects == subjects.uniq
    errors.add(:actions, 'must have unique subjects') unless subjects_are_unique
    subjects_are_unique
  end
end

在运行验证之前删除/排除标记为销毁的关联的正确方法是什么?可能包括它们?

1 个答案:

答案 0 :(得分:1)

尝试这些方法。

class Artist < AR::Base
  has_many :songs

  validate :custom_thing

  def custom_thing
    songs.reject{ |x| x._destroy}.each do |a|
      # magic here
    end
  end
end