ruby-on-rails-3 – 如何在Rails 3.2中验证其父模型范围内嵌套模型的唯一性?

ruby-on-rails-3 – 如何在Rails 3.2中验证其父模型范围内嵌套模型的唯一性?,第1张

概述这是我的问题的一个例子. 我有一个’房间’模型: class Room < ActiveRecord::Base has_many :items, :inverse_of => :room accepts_nested_attributes_for :itemsend 我有一个’Item’模型: class Item < ActiveRecord::Base belongs_t 这是我的问题的一个例子.

我有一个’房间’模型:

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中验证其父模型范围内嵌套模型的唯一性?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1272807.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存