Можно ли проверить на пользовательский метод? - PullRequest
0 голосов
/ 29 января 2010

Я пытаюсь использовать некоторую проверку, только если вызывается определенный метод в моем контроллере:

validates_presence_of :reasons, :on => :update_description

Однако я получаю эту ошибку:

TypeError in RegistrationsController#create

nil is not a symbol


/Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/validations.rb:586:in `send'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.5/lib/active_record/validations.rb:586:in `validates_presence_of'
/Users/blah/Desktop/testApp/app/models/registration.rb:6
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:380:in `load_without_new_constant_marking'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:380:in `load_file'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:521:in `new_constants_in'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:379:in `load_file'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:259:in `require_or_load'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:425:in `load_missing_constant'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:80:in `const_missing'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:92:in `const_missing'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:437:in `load_missing_constant'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:96:in `const_missing'
/Users/blah/Desktop/testApp/app/controllers/registrations_controller.rb:81:in `create'
/Library/Ruby/Gems/1.8/gems/actionpack-2.3.5/lib/action_controller/base.rb:1331:in `send'

Я поступаю неправильно? В основном у меня есть многостраничная форма, и я разбил страницы на несколько методов обновления, которые они отправляют. В этом случае я обновляю объект регистрации, используя метод, который я назвал update_description. Я хочу, чтобы проверка происходила только при вызове этого метода. Возможно ли это?

Обновление: Добавление строки ошибки:

 def create
    @registration = Registration.new(params[:registration]) //error is here
[nav logic] 
    end

Ответы [ 2 ]

1 голос
/ 29 января 2010

Похоже, вы хотите плагин мастера. Два, о которых я знаю:

  1. acts_as_wizard
  2. wizardly

Надеюсь, это поможет вам начать.

1 голос
/ 29 января 2010

Параметр: on указывает, когда эта проверка активна (по умолчанию: сохранить, другие параметры: создать,: обновить). Это относится к модели, а не к контроллеру.

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