Проверять только первые два встроенных объекта title атрибут вложенных атрибутов rails - PullRequest
0 голосов
/ 04 июня 2018

Я строю 4 объекта целей обучения для курса, который принимает параметры в качестве вложенных атрибутов.Я хочу проверить только наличие первых двух названий для целей обучения, в то время как 2 должны быть необязательными, то есть отклонять, если не указано.

class Course < ApplicationRecord
    has_many :learning_objectives
    accepts_nested_attributes_for :learning_objectives
end

class LearningObjective < ApplicationRecord
   belongs_to :course
   validates_presence_of :title
end

Как проверить только первые 2 построенных объекта?

1 Ответ

0 голосов
/ 04 июня 2018

Добавить пользовательский метод проверки , например:

class Course < ApplicationRecord
  has_many :learning_objectives
  accepts_nested_attributes_for :learning_objectives

  MIN_LEARNING_OBJECTIVES = 2
  MAX_LEARNING_OBJECTIVES = 4

  validate :learning_objectives_count_in_range

  private

  def learning_objectives_count_in_range
    objectives_count = learning_objectives.count
    return if objectives_count.between?(MIN_LEARNING_OBJECTIVES, MAX_LEARNING_OBJECTIVES)

    errors.add(:base, "must have between #{MIN_LEARNING_OBJECTIVES} and #{MAX_LEARNING_OBJECTIVES} learning objectives")
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...