1

我有一个看起来像这样的模型:

class thing < ActiveRecord::Base
  has_many :bobbles

  validate :has_two_bobbles
  def has_two_bobbles
    unless self.bobbles.size == 2
      errors.add(:bobbles, "Need two bobbles")
    end
  end
end

从表单更新时我遇到了麻烦。如果我删除一个 bobble 并在同一个提交中添加一个 bobble,当我点击 self.bobbles.size 我得到 3 而不是 2。是否有任何地方可以限制 self.bobbles 只返回那些没有计划删除的记录?

我知道在控制器中您可以访问参数中的 _destroy,但是模型级别是否有任何内容表明是否要删除记录?

4

1 回答 1

2

记录在响应时将死.marked_for_destruction?

class thing < ActiveRecord::Base
  has_many :bobbles

  validate :has_two_bobbles
  def has_two_bobbles
    unless self.bobbles.select {|t| !t.marked_for_destruction?}.size == 2
      errors.add(:bobbles, "Need two bobbles")
    end
  end
end
于 2013-03-07T20:56:39.500 回答