2013-03-07 46 views
1

我有一个模型,看起来像这样:Rails验证:除了要删除对象的计数关联?

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只返回那些没有计划删除的记录?

我知道在控制器中你可以访问params中的_destroy,但是在模型级别有​​什么指示记录是否将被删除?

+0

总之没有!你能告诉我们控制器的行动,所以我们可以看到你是如何删除和添加波纹 – jamesc 2013-03-07 20:49:14

回答

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 
+0

我知道有一种方法,跟踪这一点,感谢提醒! – biagidp 2013-03-07 21:55:11

相关问题