1

デバイス ユーザーに 2 つのフィールドを追加しました。次のように移行ファイルに追加することでこれを行いました。

t.datetime  :access_bought_at, :default => DateTime.civil(0, 0, 0, 0, 0, 0, 0)
t.string    :access_type, :default => "none"

次に、これらの属性をユーザー モデルでアクセスできるようにします。

attr_accessible :email, :password, :password_confirmation, :remember_me, :access_type, :access_bought_at

次に、移行を行いました (rake db:migrate)。

しかし、これらのフィールドにアクセスして変更するのに問題があります。私はレールにかなり慣れていないので、答えはかなり簡単だと確信していますが、それらのフィールドにアクセスして変更する方法について見つけることができません (または私が見つけたものを理解することはできません)。これが私がやろうとしていることです。特定のコントローラーで、これらのフィールドを変更したいので、次のことを行っています。

current_user::access_type = "forever"
current_user::access_bought_at = Date.current()

しかし、もし私が作るなら

puts current_user::email
puts current_user::access_type
puts current_user::access_bought_at

メールだけが印刷されます。ステップが抜けていてデータベースを更新していないか、単純に間違っていると思います。私はここを読みました(deviseを使用してサインアップするときにモデルを考案しないテーブルを更新しますか?)モデルにdefを入れるだけです。どうやって?モデルを変更する以上、変更方法を指示する必要があるのは当然なので、そのためのメソッドを追加するのは正しいように思えますが、そのメソッドはどうすればよいのでしょうか。

4

1 に答える 1

1

デバイス ユーザー モデルには、他のモデルと同様にアクティブ レコード API があります。

current_user.access_type = "forever"
current_user.access_bought_at = Date.current()
current_user.save

puts current_user.email
puts current_user.access_type
puts current_user.access_bought_at
于 2012-12-28T12:48:26.163 に答える