2
我正在研究Ruby on Rails web应用程序。我想一起验证多个领域的独特性。我怎样才能做到这一点?三个不同领域的独特
例如:我有一个名为waiting
三个领域模型:
project_id
category_id
和user_id
我想确保我不会有两个相同的行中所有三个字段。
我正在研究Ruby on Rails web应用程序。我想一起验证多个领域的独特性。我怎样才能做到这一点?三个不同领域的独特
例如:我有一个名为waiting
三个领域模型:
project_id
category_id
和user_id
我想确保我不会有两个相同的行中所有三个字段。
为什么不直接到:
validates_uniqueness_of :user_id, :scope => [:project_id, :category_id]
+
add_index :waitings, [:project_id, :category_id, :user_id], :unique => true
读取API:
它不漂亮,但这个工作对我来说:
class Waiting < ActiveRecord::Base
validate :must_be_unique
def must_be_unique
if self.class.where(project_id: project_id, category_id: category_id, user_id: user_id).exists?
errors.add(:base, 'Must be unique')
end
end
end
当然,你可以只使用一个独特的密钥在你的数据库架构,然后赶上你需要极少的情况下相关的例外。
寻找一点清洁剂...更多的铁轨... – Nayish 2011-01-23 16:22:23