Необходимо ли добавлять столбец имени пользователя в приложение (используя Devise,) для добавления этого атрибута? - PullRequest
0 голосов
/ 30 января 2012

Многие люди говорят, что вам нужно просто добавить атрибут :username в модель пользователя, если вы хотите создать атрибут :username:

user.rb:

attr_accessible :email, :password, :password_confirmation, :remember_me, :username

Я не уверен, что что-то вроде :username уже назначено в базе данных (как вы устанавливаете Devise.)

Если нет, как я могу добавить его в базу данных и что еще мне нужно сделать? (Извините, я новичок в Rails.)

Ответы [ 2 ]

2 голосов
/ 30 января 2012

Да, по крайней мере для Devise 2.0 вам нужно username в вашей базе данных, если вы хотите сохранить его.

Создать миграцию - это добавит скрипт для создания поля имени пользователя в вашей пользовательской таблице. Запустите следующее из вашего терминала.

$ rails generate migration add_username_to_user username:string

запустить миграцию (снова из терминала)

$ rake db:migrate

После этого к вашей таблице user будет добавлено поле username.

Затем вам нужно отредактировать представления Devise, чтобы пользователи могли зарегистрироваться под именем пользователя. Для этого взгляните на раздел «Настройка представлений» на github Страница разработки

Но, в основном, выполните следующее, чтобы создать представления devise (по умолчанию они хранятся в движке devise, поэтому вы не видите их на диске)

$ rails generate devise:views

Затем войдите и отредактируйте соответствующий файл вида. Для регистрации это

app/views/devise/registrations/new.html.erb

Вы также захотите показать имя пользователя на их странице редактирования. Это под

app/views/devise/registrations/edit.html.erb

Вам нужно будет добавить current_user.username где-нибудь в этом «редактируемом» виде. Но вы получите сообщение о том, что у вас нет доступа к username, поэтому сделайте его доступным атрибутом

# User.rb - this is your user model
attr_accessible :username

Тебе повезло, я только что сделал это вчера, поэтому я помню все шаги:)

0 голосов
/ 30 января 2012

Нет, вам не нужно этого делать. Если я правильно помню, столбец имени пользователя по умолчанию называется «логин». Чтобы получить доступ к нему под именем пользователя, вы можете просто создать виртуальный атрибут в классе User, например:

def username
  login
end

Это просто вернет логин в качестве имени пользователя.

Подробнее о виртуальных атрибутах можно узнать здесь:

http://railscasts.com/episodes/16-virtual-attributes

РЕДАКТИРОВАТЬ:

Dty прав, что этого столбца нет, поэтому для получения подробной информации о том, как это сделать:

https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-or-email-address

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