2015-12-03 2 views
0

Я использую Devise for User table. В методе api я хочу отправить свою запись пользователя вместе с полем пароля как json. Мой код для этого:Невозможно отправить пароль разработчика как данные json

users = User.where(status: "active") 

Здесь у меня есть все поля, включая encrypted_password. Но когда я пытаюсь отправить эти данные с:

render json: { users: users } 

в DEViSE столбцы не появляется в результате, кроме электронной почты.

Как я могу получить пароль тоже в результате?

+0

Почему вы хотите выдать пароль пользователя в формате JSON? Это будет легко иметь проблемы с безопасностью. – Yang

+0

@Yang, у меня есть требование также отправить пароль, так что при каждом запросе на вход не будет отправлено на сервер для проверки учетных данных пользователя. –

ответ

0

Devise переопределяет метод serializable_hash для раскрытия только доступных атрибутов.

Override as_json метод в классе User

def as_json(options = {}) 
    options[:methods] ||= [] 
    options[:methods] << :encrypted_password 
    super options 
end 

или использовать

user.to_json(methods: [:encrypted_password]) 
+0

Это сработало! Большое вам спасибо за вашу помощь Jaehyun Shin :) –

Смежные вопросы