你如何建模“喜欢"?在轨道上? [英] How do you model "Likes" in rails?
本文介绍了你如何建模“喜欢"?在轨道上?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有 3 个模型:用户、对象、喜欢
I have 3 models: User, Object, Likes
目前,我有一个模型:一个用户有很多对象.我如何进行建模:
Currently, I have the model: a user has many Objects. How do I go about modeling:
1) 一个用户可以喜欢很多对象
1) A user can like many objects
2) 一个对象可以有很多赞(来自不同用户)
2) an Object can have many likes (from different users)
所以我希望能够做这样的事情:
So I want to be able to do something like this:
User.likes = 用户喜欢的对象列表
User.likes = list of objects liked by a user
Objects.liked_by = 对象喜欢的用户列表
Objects.liked_by = list of Users liked by object
下面的模型肯定是错误的...
The model below is definitely wrong...
class User < ActiveRecord::Base
has_many :objects
has_many :objects, :through => :likes
end
class Likes < ActiveRecord::Base
belongs_to :user
belongs_to :object
end
class Objects < ActiveRecord::Base
belongs_to :users
has_many :users, :through => :likes
end
推荐答案
为了进一步阐述我对 Brandon Tilley 的回答的评论,我建议如下:
To elaborate further on my comment to Brandon Tilley's answer, I would suggest the following:
class User < ActiveRecord::Base
# your original association
has_many :things
# the like associations
has_many :likes
has_many :liked_things, :through => :likes, :source => :thing
end
class Like < ActiveRecord::Base
belongs_to :user
belongs_to :thing
end
class Thing < ActiveRecord::Base
# your original association
belongs_to :user
# the like associations
has_many :likes
has_many :liking_users, :through => :likes, :source => :user
end
这篇关于你如何建模“喜欢"?在轨道上?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文