2015-04-02 18 views
0

這是情況。我使用Facebook登錄並希望通過postgres數據庫將朋友數組保存到我的Rails服務器中。將數據保存爲帶有Rails的postgres數據庫中的ActionController :: Parameters是不是很糟糕?

進來用於fb_friends的PARAMS是:

"fb_friends"=>[{"id"=>"1381984758791468", "name"=>"ios ipod"}] 

阿比控制器強參數: user_params具有fb_friends: [:id, :name]

在用戶模型中,序列化fb_friends。

serialize :fb_friends 

所有這些工作,但我注意到,我的fb_friend類類型爲ActionController::Parameters,它就像一個哈希。這是壞事嗎?

在Rails控制檯,

u.fb_friends.first.class 
=> ActionController::Parameters 

u.fb_friends.first[:id] 
=> "1381984758791468" 

u.fb_friends.first[:name] 
=> "ios ipod" 

編輯:

忘了補充我的架構/遷移

Migraton:

change_column :users, :fb_friends, :text 

架構爲用戶表:

t.text  "fb_friends",  default: "{}" 
+1

爲什麼有人會投票關閉它? :( – okysabeni 2015-04-02 19:05:02

回答

2

它看起來像適用於您,但更好的做法是創建一個名爲FacebookFriend的模型,以便您的每個模型/數據庫表只有一個目的。

FacebookFriend(id, user_id, facebook_friend_id, name, created_at, updated_at) 

class User < ActiveRecord::Base 
    has_many :facebook_friends 
end 

class FacebookFriend < ActiveRecord::Base 
    belongs_to :user 
end 

如果您認爲您的用戶經常擁有普通的FacebookFriends,那麼您也可以做一個「有很多直通」的關係。

0

除非你要反序列化它並將它用作ActionController :: Parameters實例,否則你應該將它轉換爲標準哈希。對於額外的積分在postgres中使用hstore,你仍然可以搜索等。

+0

我該怎麼做代碼?在User.rb模型類中?在控制器中? – okysabeni 2015-04-03 16:03:20

+1

也許只是序列化:fb_friends.to_json或類似的東西..現在沒有時間測試了。 to_a,to_h,to_json應該將其更改爲更多的vanilla數據類型。 – errata 2015-04-03 16:28:17

相關問題