【发布时间】:2014-07-21 19:04:03
【问题描述】:
我见过其他 SO 问题,例如 - How do you validate uniqueness of a pair of ids in Ruby on Rails? - 它描述了添加范围参数以强制密钥对的唯一性,即(来自答案)
validates_uniqueness_of :user_id, :scope => [:question_id]
我的问题是如何对整行数据进行这种验证?
在我的情况下,我有五列,只有当所有五列都相同时才应该拒绝数据。此数据不是用户输入的,该表本质上是一个连接表(没有 id 或时间戳)。
我目前的想法是搜索包含所有列值的记录,并且仅在查询返回 nil 时创建,但这似乎是一个不好的解决方法。有没有更简单的“rails 方式”来做到这一点?
【问题讨论】:
-
validates_uniqueness_of :user_id, :scope => [*self.column_names]可能有效(但它包括created_at、id和updated_at,应该删除) -
应该补充一点,我的表基本上是一个加强的连接表,所以没有 id 或时间戳。
标签: ruby-on-rails activerecord ruby-on-rails-4