情况如下。我使用facebook登录并希望通过postgres数据库将朋友数组保存到我的rails服务器中。
进入fb_friends的参数是:
"fb_friends"=>[{"id"=>"1381984758791468", "name"=>"ios ipod"}]
Api控制器强参数:
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: "{}"
答案 0 :(得分: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
你也可以做一个&#34;有很多通过&#34;如果您认为您的用户通常会有常见的Facebook朋友,那就是关系。
答案 1 :(得分:0)
除非您要反序列化它并将其用作ActionController :: Parameters实例,否则您应该将其转换为标准哈希。对于额外的积分,使用postgres中的hstore,你仍然可以搜索等..