2012-01-30 8 views
0

多くの人々は、あなたがちょうどあなたが:username属性を作成する場合は、ユーザーモデルで:username属性を追加する必要があると言う:属性を追加するには、(Deviseを使用して)アプリにユーザー名列を追加する必要がありますか?

user.rb:

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

私がもしわかりません

もしそうでなければ、データベースに追加するにはどうしたらいいですか? (申し訳ありません、私はRailsの初心者です)

答えて

2

はい、少なくともDevise 2.0の場合、保存する場合はデータベースにusernameが必要です。

マイグレーションを作成する - ユーザーテーブルにユーザー名フィールドを作成するためのスクリプトが追加されます。端末から次のコマンドを実行します。

$ rails generate migration add_username_to_user username:string 

あなたuser表はusernameフィールドが追加されますことをした後(再び端末から)

$ rake db:migrate 

を移行を実行します。

次に、ユーザーがユーザー名で登録できるように、Deviseビューを編集する必要があります。そのためには、githubの "Configure Views"セクションを見てください。

しかし基本的には、以下のコマンドを実行してdeviseビューを作成します(デフォルトではdeviseエンジンに保存されているため、 )

$ rails generate devise:views 

次に、適切なビューファイルを編集します。登録のためには、

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

"編集"ページにユーザー名を表示することもできます。それ以下です

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

「編集」ビューのどこかにcurrent_user.usernameを追加する必要があります。しかし、あなたはあなたが私はすべてのステップ:)

+0

ありがとうございます!私はとても幸運です。ねえ、私はnew.html.erbに問題があります。私はこれを行いました: '

<%= f.label :username %>
<%= f.username_field :username %>
'しかし、私はこのエラーが発生しています:# 'のための'未定義メソッド 'username_field ' – alexchenco

+0

気にしないで、' f.text_field'で動作させました。ありがとう! – alexchenco

0

ありませんを覚えているので、私はちょうど昨日、これをしなかった幸運

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

それにアクセス属性作るのでusernameにアクセスすることはできませんというエラーを取得します、あなたはそれをする必要はありません。私が正しく覚えていれば、デフォルトのユーザー名列の名前は「ログイン」です。これは単なるユーザ名としてログイン値を返します

def username 
    login 
end 

:ユーザー名の下にそのにアクセスするには、あなただけのように、Userクラスに仮想属性を作成することができます。

あなたはここに仮想属性についての詳細を調べることができます。

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

EDIT:

:それをやっての詳細についてはよう

DTYは、この列が存在しないことを右です

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

+0

これはDeviseの古いバージョンですか? Devise 2.0以降、Deviseによって生成されたテーブルには 'login'という名前のフィールドはありません。 – Dty

+0

はい、あなたが実際に正しいです、あなたはここで詳細な情報を見つけることができます:https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-sign-in-using-their-username-または電子メールアドレス – Spyros

関連する問題