Проверка и модель ActiveRecord на основе данных связанной модели? - PullRequest
0 голосов
/ 22 апреля 2010

СЦЕНАРИЙ:

Given that a model called Edition has its community feature enabled

I want all Records under that Edition to validate for the community field

When the community feature is disabled, the community field will NOT be validated

По сути, я пытаюсь написать пользовательскую функцию проверки на уровне ActiveRecord, которая проверит, имеет ли родительское издание правильное значение true / false.

Но я не уверен, что лучший способ справиться с этим. Мой инстинкт похож на это, но я хотел бы получить отзывы сообщества:

class Record < ActiveRecord::Base
validate edition_has_communities?

private
  def edition_has_communities?
    if self.edition.communities_enabled
       if community.blank?
          errors.add(:community, "must be filled out for this Edition")
       end
    end
  end
end

Меня беспокоит, что этот метод зависит от связи с редакцией, определенной до проверки, и это не всегда так. Может быть, это что-то, что должно быть проверено на переднем конце?

Мысли

1 Ответ

0 голосов
/ 22 апреля 2010

Похоже, это бы сработало, и если вы беспокоитесь о том, определена ли еще ассоциация издания, почему бы просто не добавить проверку? if self.edition and self.edition.communities_enabled
Для меня это не то, что нужно проверять на переднем конце, я думаю, что вы правы, чтобы поместить это в модель. Есть ли вещи, которые когда-либо действительно должны быть проверены на переднем конце?

...