#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. эй, спасибо, ребята, но вы знаете, где я узнаю больше о «ресурсе»?