ich verwendet, um sowohl die von den genannten Tutorials in den anderen Antworten, Railscast #210 und der Devise Wiki. Soweit ich das beurteilen konnte, sagen sie jedoch nicht explizit, wie das Vorhandensein und/oder die Eindeutigkeit des Feldes "Benutzername" überprüft werden soll.
Wenn Sie hinzugefügt Benutzernamen mit einer einfachen Migration -
rails generate migration addUsernameToUser username:string
Dann entwickeln sich nichts Besonderes tun mit diesem Bereich, so dass Sie prüft, ob die Validierung hinzufügen müssen und Einzigartigkeit sich im User-Modell.
class User < ActiveRecord::Base
...
validates_presence_of :username
validates_uniqueness_of :username
Wenn Sie jedoch auf der # 209 aussehen Railscast ist ein Beispiel für die Migration verwendet, um das User-Modell zu erstellen.
class DeviseCreateUsers < ActiveRecord::Migration
def self.up
create_table(:users) do |t|
t.database_authenticatable :null => false
# t.confirmable
t.recoverable
t.rememberable
t.trackable
# t.lockable :lock_strategy => :failed_attempts, :unlock_strategy => :both
t.timestamps
end
add_index :users, :email, :unique => true
# add_index :users, :confirmation_token, :unique => true
add_index :users, :reset_password_token, :unique => true
# add_index :users, :unlock_token, :unique => true
end
def self.down
drop_table :users
end
end
Hinweis hier, dass die Benutzer E-Mail als einzigartig definiert ist. Vielleicht würde, wenn der Benutzername unter Verwendung derselben Syntax hinzugefügt würde, Devise Magic für Präsenz und Einzigartigkeit sorgen.
Diese Verbindung unterbrochen ist, zu verstehen. Vielleicht könnten Sie das nächste Mal die notwendigen Informationen in Ihre Antwort eintragen? – Benson
Der Link verweist jetzt auf die oberste Ebene des Devise-Wikis. Da ich nicht wusste, dass das Wiki dort war, fand ich den Link hilfreich. Wahrscheinlich ist die spezifische Antwort jetzt https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign_in-user-user-username-oder-email-address, obwohl wie lashleigh sagt, Dieser Artikel adressiert _validating_ den Benutzernamen im Modell nicht. –
In Rails 4 funktioniert das einfach nicht mehr. Es ist nicht mehr einfach. – CarlosCervantes