Ruby on Rails 4 アプリがありomniauth-facebook
、認証に gem を使用しています。私は持っている
@omniauth = request.env["omniauth.auth"]
@omniauth[:extra][:raw_info][:education]
ここで、ユーザーの学歴 ( ) をデータベースのテーブルのeducation
列に保存したいと考えています。オブジェクトを含む Array オブジェクトです (つまり、 を返します)。Auth
@omniauth[:extra][:raw_info][:education]
OmniAuth::AuthHash
@omniauth[:extra][:raw_info][:education][0].class
OmniAuth::AuthHash
Rails api によると、「Active Record は、YAML を使用してテキスト列内の任意のオブジェクトをシリアル化できます。そのためには、クラス メソッド serialize への呼び出しでこれを指定する必要があります。これにより、配列、ハッシュ、およびその他のマッピング不可能なオブジェクトを格納できるようになります。追加の作業を行うことなく。」だから私は次のことをしました、そしてそれはうまくいっているようです:
auth.education = @omniauth[:extra][:raw_info][:education]
auth.save
これに何か欠点はありますか?より良い方法はありますか (json を使用するなど)? 私が考えることができる1つの欠点は、この方法でデータを保存すると、おそらく必要のない検索とクエリが難しくなることです.
どうもありがとう。