【发布时间】:2011-05-30 03:36:57
【问题描述】:
我有一个接受_nested_attributes_for klasses 的教师模型。如果 klass 中有用户并且我想打印验证消息,我不希望能够删除 klass。
这就是我所拥有的……
class Teacher < ActiveRecord::Base
accepts_nested_attributes_for :klasses, :reject_if => proc { |a| a['name'].blank? }, :allow_destroy => true
end
class Klass < ActiveRecord::Base
belongs_to :teacher
has_many :users
before_destroy :reject_if_has_users
private
def reject_if_has_users
if users.length > 0
errors.add_to_base "You cannot delete this class as it contains users."
false
else
true
end
end
end
当我使用accepts_nested_attributes_for 并传入“klasses_attributes”=>{“0”=>{“name”=>“test”时,当我尝试从包含用户的教师中删除klass 时,我希望验证失败, "_destroy"=>"1", "id"=>"17183"} 哈希。
如果我没有 error.add_to_base 行,上述方法将防止 klass 被删除。但是,它不会导致显示验证消息。当我有那条线时,它不会阻止删除。
谢谢,
提姆
【问题讨论】:
标签: ruby-on-rails-3 activerecord nested-attributes