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