Rails 3: Манипулировать устройством "ресурс" в контроллере - PullRequest
1 голос
/ 06 июня 2011

Я использую devise & 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 повлияет на ресурс во многом так же, как и модель - но, похоже, это не так.Я все еще получаю «пустую» ошибку проверки в этой форме.

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

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

1 Ответ

2 голосов
/ 06 июня 2011

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

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