2012-03-21 8 views
1

クリアランスの宝石を使用してウェブサイトに認証を追加します。 標準ユーザーモデルは次のようになります。レールを使用してユーザモデルにカスタムカラムを追加するクリアランスgem

class User < ActiveRecord::Base 
    include Clearance::User 
end 

今私は、ユーザーモデルにプロパティを追加します。

:それは次のようになりますので、次のステップは、私がユーザーモデルファイルを編集してCustomerNameの

: 私はこの移行を作成しました:すくいデシベル後

class AddCustomernameToUsers < ActiveRecord::Migration 
    def change 
    add_column :users, :customername, :string 
    end 
end 

:移行、データベースには、今の1つの以上の列を持っています

class User < ActiveRecord::Base 
    include Clearance::User 
    attr_accessor :customername 
end 

次の手順として、新しいユーザーにサインアップし、sqliteデータベースブラウザを使用して、このユーザーの顧客名フィールドにテスト文字列 'charly'を追加しました。

私のコントローラーでは、ユーザーオブジェクトを作成して印刷して、すべてのデータが存在するかどうかを確認します。

thisUser = User.find(current_user.id) 
puts thisUser.inspect 

コンソール出力は、次のとおり

#<User id: 1, email: "[email protected]", encrypted_password: "0494a9b3b692acaea96ab57bed500adf26dbafa5", salt: "75c889d099438476204ce46b9cb406fb1f73423c", confirmation_token: nil, remember_token: "907b9bd600246d0b8dcc06a782457665f614b368", created_at: "2012-03-21 20:59:44", updated_at: "2012-03-21 21:12:59", customername: nil> 

のでCustomerNameのはゼロです。どういうわけかこのフィールドのデータはデータベースから正しく引き出されません。

何が間違っていますか?

申し訳ありませんが、私はレールの初心者です。非常に単純なことかもしれませんが、私は一生懸命に試して、一日中グーグルで試してもうまくいきませんでしたので、スタックオーバーフローの賢明さに目を向けます。 ありがとうございます。

答えて

1

ユーザーモデルでattr_accessorを使用する代わりに、attr_accesible:customernameを使用すると動作します。 attr_accessibleを指定しないと、データはデータベースに保存されないため、フィールドの値がゼロになるのはそのためです。

0

sqliteデータベースブラウザを使用しているときに正しいデータベースを編集していますか?そうであれば、別のツールを使用して顧客名を追加するのではなく、それが役立つかどうかを確認するのではなく、顧客作成コードを変更してみます。

+0

はこれを試してみました: thisUser = User.find(current_user.id) thisUser.customername = "ハリー" は私がこれを行う場合でも、CustomerNameのは、私はそれを得ることができた – Etienne678

+0

nilをまだですthisUser.inspect を置きます別の認証宝石を使ってやったのですが、ここでも何が問題になったのか興味があります – Etienne678

関連する問題