我有两个模型:event.rb
和bag.rb
事件具有名为slug
的属性,并且包具有名为bag_code
的属性。
我根据bag_code
属性生成视图。例如。如果行李代码是" 4711"我根据该代码加载记录。
现在,在某些情况下,用户可以在事件中定义slug URL,在这种情况下,它应该覆盖行李代码。
我不想要的是用户可以选择slug
,其值已经是bag_code(在这种情况下,应该禁止选择slug
" 4711&# 34;)因为这会在我的视图中引起麻烦,所以它必须在两个模型属性中唯一。
我试图通过范围解决这个问题
validates_uniqueness_of :slug, scope: [:bag_code]
但这只适用于同一型号。
我的模型之间的关联是:
event.rb
has_many :bags
答案 0 :(得分:1)
自定义验证方法适用于此情况。以下是设置方法:
<强> event.rb 强>
validates :slug, uniqueness: true
validate :slug_is_unique_from_bag_codes
private
def slug_is_unique_from_bag_codes
if Bag.find_by bag_code: slug
errors.add :base, "The slug is already being used as a bag code"
end
end