【问题标题】:Rails validations: count associations excluding objects to be deleted?Rails 验证:计数关联不包括要删除的对象?
【发布时间】:2013-03-08 04:56:39
【问题描述】:

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

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,但是在模型级别是否有任何内容表明是否要删除记录?

【问题讨论】:

  • 总之不!您能否向我们展示控制器操作,以便我们查看您是如何删除和添加泡泡的

标签: ruby-on-rails activerecord


【解决方案1】:

回复.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

【讨论】:

  • 我知道有一种方法可以跟踪这个,谢谢提醒!
猜你喜欢
  • 2016-10-18
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多