Что такое замена RailR 3 для ActiveRecord :: Errors? - PullRequest
11 голосов
/ 08 августа 2010

Что такое замена RailR 3 для ActiveRecord :: Errors?

В Rails 2.3.8 это объект:

>> ActiveRecord::Errors
=> ActiveRecord::Errors

В Rails 3.0.0rc вы получаете NameError:

>> ActiveRecord::Errors
NameError: uninitialized constant ActiveRecord::Errors
 from (irb):2

Я пытаюсь заставить волшебно генератор работать с Rails 3.

$ rails g wizardly_scaffold home

Но не получается:

/Library/Ruby/Gems/1.8/gems/wizardly_gt-0.1.8.9/lib/validation_group.rb:150:
uninitialized constant ActiveRecord::Errors (NameError)

Строка, на которую он ссылается, такова:

ActiveRecord::Errors.send :include, ValidationGroup::ActiveRecord::Errors

Ранее в файле мы видим:

module ValidationGroup
  module ActiveRecord
...
    module Errors # included in ActiveRecord::Errors
      def add_with_validation_group(attribute, msg = I18n.translate('activerecord.errors.messages')[:invalid], *args, &block)
        add_error = @base.respond_to?(:should_validate?) ? (@base.should_validate?(attribute.to_sym) || attribute == :base) : true
        add_without_validation_group(attribute, msg, *args, &block) if add_error
      end
...
end

Ответы [ 3 ]

12 голосов
/ 08 августа 2010

Это было бы ActiveModel::Errors.Такие вещи, как проверки и обработка ошибок, были перенесены в Active Model, чтобы обеспечить общий API для всех Rails ORM, таких как Active Record, Data Mapper, Mongoid и т. Д. Для подключения к Rails.Плагин wizardly должен сначала проверить ActiveModel и, если он существует, включить в него обработку ошибок, а не ActiveRecord::Errors.Тривиальное изменение.

0 голосов
/ 24 февраля 2011

Wizardly, очевидно, делает гораздо больше, но вы должны проверить validation_scopes , которую я только что обновил для совместимости с Rails3. Вместо того, чтобы группировать вещи по атрибутам, он просто позволяет вам явно объявлять разные группы проверок путем создания наборов ошибок в пространстве имен. Внутренне это гораздо более простая реализация (тот же код обрабатывает Rails 2 и 3). Лично я считаю, что это более гибко, чем группирование по атрибуту (что, если атрибут должен иметь разные ограничения, например, на разных шагах мастера?).

0 голосов
/ 01 сентября 2010

Попробуйте этот драгоценный камень

http://rubygems.org/gems/wizardly_gt

Я только начал играть с Wizardly, но вышеприведенное, по крайней мере, кажется совместимым с Rails 3.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...