2
我的用户模型中有validate :my_validate
,但如果“has_may:through”属性发生更改,则不会调用my_validate
。这是正确的行为?以“has_many:through”进行验证
我的代码:
class User < ActiveRecord::Base
has_many :roles, :through => :user_roles
validate :my_validate
def my_validate
raise 123
end
这引发异常:
User.find(1).name = 'new_name'
这工作:
User.find(1).roles = []
据我了解,用户表没有更新,以便轨道认为验证是没有必要的,但它看起来很奇怪。
“我知道用户表没有更新,所以导轨认为验证没有必要,但它看起来很奇怪。” – 2012-07-16 07:51:47
我认为验证不是关于“表”,它应该是关于“模型”。 “角色”和“名字”都是属性,尽管它们有内在的表现,它们应该同样表现。 – 2012-07-16 07:59:51
我的意思是,当你在用户模型中使用保存方法时,它尝试保存数据在你的表中,例如user = User.find(1).name ='new_name'和user.save,它会尝试在用户中存储数据表。 – 2012-07-16 09:08:32