【发布时间】:2016-10-14 10:25:39
【问题描述】:
我有属于并有很多关系。
问题是我需要检查嵌套属性中的 score 字段是否小于 0,它不应该保存记录而是返回到带有错误消息的表单。
我正在尝试的代码是:
class QuizAttempt < ActiveRecord::Base
has_many :quiz_answers
accepts_nested_attributes_for :quiz_answers, reject_if: :invalid_score
validate :score_greater_than_zero
private
def score_greater_than_zero
errors.add(:quiz_answers, 'must greater than 0') if invalid_score(attributes)
end
def invalid_score(attributes)
attributes['score'].to_i > 0
end
end
class QuizAnswer < ActiveRecord::Base
belongs_to :quiz_attempt
end
表单域看起来像包含数组:
name="quiz_attempt[quiz_answers_attributes][5][score]"
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 rails-activerecord