Rails 4:通过关联创建对象时,唯一性验证不起作用

时间:2015-06-25 03:03:02

标签: ruby-on-rails validation associations unique

假设我有两种模式:

class Question < ActiveRecord::Base
  has_many :answers, dependent: :destroy, inverse_of: :question
  accepts_nested_attributes_for :answers, :allow_destroy => true
  validates_associated :answers
  validates :text, presence: true
end

class Answer < ActiveRecord::Base
  belongs_to :question, :inverse_of => :answers

  validates :text, :question, presence: true
  validates :text, uniqueness: true
end

现在,如果我这样做:

q = Question.new(text: "Test question")
q.answers << Answer.new(text: "non unique text")
q.answers << Answer.new(text: "non unique text")
q.valid?

它返回true!如果我尝试

q.save
它成功了!但是,如果其中一个答案有空白文本,则状态验证会使q无效。除了:

a = q.answers.first
a.save

将因预期的文本错误而失败。

为什么在使用问题创建答案时,唯一性验证无效?

提前致谢。

0 个答案:

没有答案