Rails 3: манипулирование «ресурсом» разработки в контроллере?

#ruby-on-rails-3 #devise

#ruby-on-rails-3 #разработка

Вопрос:

Я использую devise amp; devise_invitable в проекте rails 3, и я пытаюсь манипулировать некоторыми полями объекта «User» в контроллере devise.

Действие заключается в следующем:

   def update
    self.resource = resource_class.accept_invitation!(params[resource_name])

    resource.first_name = 'Lemmechangethis'

    if resource.errors.empty?
      set_flash_message :notice, :updated
      sign_in(resource_name, resource)
      respond_with resource, :location => after_accept_path_for(resource)
    else
      respond_with_navigational(resource){ render_with_scope :edit }
    end
  end
  

Я бы подумал, что (закомментированный) вызов resource.first_name повлияет на ресурс почти так же, как на модель, но, похоже, это не так. Я все еще получаю «пустую» ошибку проверки в этой форме.

Итак, вопрос в том, как мне указать значения для пользовательской модели в devise (и / или devise_invitable), которые на самом деле будут подлежать проверке?

Любые предложения приветствуются, Джон

Ответ №1:

resource возвращает экземпляр пользовательских моделей. Итак, resource.first_name = 'Lemmechangethis' инструкция изменяет ваш экземпляр User models, но не запускает проверки ваших пользовательских моделей, вероятно, поэтому resource.errors всегда возвращает пустой массив. Один из способов запустить проверку пользовательских моделей — это вызвать resource.valid? , например. Затем вы можете проверить resource.errors массив на наличие конкретных сообщений об ошибках.

Комментарии:

1. эй, спасибо, ребята, но вы знаете, где я узнаю больше о «ресурсе»?