Ошибка перекрытия дат пользовательской проверки rails3

Создание валидатора, который должен проверять нескольких братьев и сестер, принадлежащих одному и тому же (опционально) родителю.

class Optionrate < ActiveRecord::Base
  belongs_to :option

  attr_accessible :from, :to, :option_id

  validates_presence_of :from, :to

  validate :not_overlap

  scope :overlaps, ->(from, to) do
    where "((from <= ?) and (to >= ?))", to, from
  end

  def overlaps?
    overlaps.exists?
  end

  def overlaps
    siblings.overlaps from, to
  end

  def not_overlap
    errors.add(:key, t('overlap_message')) if overlaps?
  end

  def siblings
    Optionrate.where('option_id = ?', option_id).all
  end

генерирует ошибку: "неопределенный метод" перекрывается "для []:Array" со ссылкой на оператор

siblings.overlaps from, to

Тот факт, что братья и сестры множественного числа, заставляет меня предположить, что он ожидает массив, так что это странно.

[Другое было то, что оператор where не принимал * где ('option_id =?', Params[:option_id])*, откуда запись еще не создана, поскольку проверка еще не завершена]

1 ответ

Решение

Пожалуйста, попробуйте запустить код после удаления .all от Optionrate.where('option_id = ?', option_id).all потому что, когда вы используете .Where тогда нет необходимости использовать .all метод.

Или же

Посмотрите следующий URL для ссылки http://guides.rubyonrails.org/3_2_release_notes.html

Другие вопросы по тегам