ruby-on-rails-3 – 如何在Rails 3.2中验证其父模型范围内嵌套模
发布时间:2020-12-17 07:10:30 所属栏目:百科 来源:网络整理
导读:这是我的问题的一个例子. 我有一个’房间’模型: class Room ActiveRecord::Base has_many :items,:inverse_of = :room accepts_nested_attributes_for :itemsend 我有一个’Item’模型: class Item ActiveRecord::Base belongs_to :room,:inverse_of = :i
这是我的问题的一个例子.
我有一个’房间’模型: class Room < ActiveRecord::Base has_many :items,:inverse_of => :room accepts_nested_attributes_for :items end 我有一个’Item’模型: class Item < ActiveRecord::Base belongs_to :room,:inverse_of => :items validates :some_attr,:uniqueness => { :scope => :room} end 我想验证属于某个房间的所有Items的some_attr属性的唯一性. 当我尝试验证项目时,我收到此错误: TypeError (Cannot visit Room) 我无法将验证范围设置为:room_id,因为项目尚未保存,因此id为nil.我还想阻止在“房间”模型中使用自定义验证器. 在Rails中有什么干净的方法吗?我也想知道我是否正确设置了:inverse_of选项… 解决方法
我对你如何使用inverse_of没有看错.
至于问题,在类似的情况下,我最终在迁移中强制执行唯一性约束,就像这样 add_index :items,[ :room_id,:some_attr ],:unique => true 这是AR级验证的补充 validates_uniqueness_of :some_attr,:scope => :room_id (我不确定将关联名称用作范围是否有效,在尝试引用查询中不存在的房间列时,数据库适配器是否会引发异常?) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |