这是我的档案:
word.rb
class Word < ActiveRecord::Base
has_many :word_answers, dependent: :destroy
accepts_nested_attributes_for :word_answers, allow_destroy: true,
reject_if: lambda {|attribute| attribute[:word_id].blank?}
end
word_answer.rb
class WordAnswer < ActiveRecord::Base
belongs_to :word
validates :content, uniqueness: true, presence: true
end
我是否有任何方法可以在word.rb中对word_answer.rb validates :content, uniqueness: true, presence: true
进行验证?
Rails 4。
我尝试了validates_associated :word_answers
,但它不起作用。
我想实现的是
(1)如果我提交Word,如果没有WordAnswer则会出错。
(2)如果我提交Word,如果有BLANK WordAnswer则会出错。
(3)如果验证是WordAnswer错误,如果我提交Word将会出错。
答案 0 :(得分:0)
我不认为我们是否可以将validates :content, uniqueness: true, presence: true
添加到Word方法中,但您可以通过添加before_save&amp ;;来在Word模型中实现WordAnswer模型的验证。 before_update过滤器。
我想WordAnswer模型中的验证将在您在表单中使用嵌套属性时正常工作,并且它将验证正常。
在其他情况下,请解释一下您实际想要实现的目标?
答案 1 :(得分:0)
尝试以下
validate :detail
def detail
word_answers.each do |word_answer|
if word_answer.content.blank?
errors.add(:"word_answer.content", "must not be blank")
word_answer.errors.add(:content, "must not be blank")
end
end
end
如果模型正确关联,它应该有效。