使用accepts_nested_attributes_for验证嵌套实例的属性的唯一性

时间:2016-04-02 00:11:05

标签: ruby-on-rails ruby ruby-on-rails-4

我正在创建一个投票系统。我希望所有选项都是唯一的,但只能在各自的Poll内。我使用proc来验证它们不是空白的:

class Poll < ActiveRecord::Base
  has_many :options

  accepts_nested_attributes_for :options, reject_if: proc { |attributes| attributes['option'].blank? }
end

但我不确定如何验证它们的独特性。我尝试在Option模型中执行此操作,但它并未拒绝通过Poll表单f.fields_for创建的重复选项:

class Option < ActiveRecord::Base
  belongs_to :poll

  validates_uniqueness_of :option, scope: :poll_id
end

是否可以使用proc

执行此操作

2 个答案:

答案 0 :(得分:0)

validates_uniqueness_of :title, :other, scope: :poll_id

等选项属性应用唯一性验证

答案 1 :(得分:0)

您可以将任何条件传递给该proc。因此,您可以对该列进行查询,并查看是否返回任何结果,如果是,则拒绝。