我有一个’房间’模型:
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 => :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
(我不确定将关联名称用作范围是否有效,在尝试引用查询中不存在的房间列时,数据库适配器是否会引发异常?)
总结以上是内存溢出为你收集整理的ruby-on-rails-3 – 如何在Rails 3.2中验证其父模型范围内嵌套模型的唯一性?全部内容,希望文章能够帮你解决ruby-on-rails-3 – 如何在Rails 3.2中验证其父模型范围内嵌套模型的唯一性?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)