ruby-china 的关注功能,数据库是怎样设计的? 弱弱问问,ruby-china 所有的数据表结构放在哪里?
是用 MongoDB 的
user.rb
field :favorite_topic_ids, :type => Array, :default => []
分享下我最近的一个解决方案:
create_table "followships", :force => true do |t|
t.integer "member_id", :null => false
t.integer "followable_id", :null => false
t.string "followable_type", :null => false
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
current_member.followships.create(followable_type: "Member", followable_id: 1)
表示当前用户关注了 ID 为 1 的用户
current_member.followships.create(followable_type: "Article", followable_id: 2)
表示当前用户关注了 ID 为 2 的帖子
用到了 Polymorphic Associations 的知识: http://guides.rubyonrails.org/association_basics.html#polymorphic-associations
这里是一个运行中的网站,可以关注人,关注帖子,关注分类等等:http://www.petegy.com/members/tylerlong
我打算把这部分功能做一个 gem 开源出去,不过暂时没有时间表,可能要等很久。
@tylerlong 用户关注帖子,是一个多对多的关联,按照你的方法,在 model 里面,如何描述他们的关系?has_and_belongs_to_many???
#6 楼 @stephen 比如 A follow B, followships 是中间表。A has_many followships, B has_many followships. 我当时的设计 A 只能是人,B 可以是任意 model. 具体有一点点复杂,建议你研究下http://guides.rubyonrails.org/association_basics.html#polymorphic-associations