你如何建模“喜欢"?在轨道上? [英] How do you model "Likes" in rails?

查看:18
本文介绍了你如何建模“喜欢"?在轨道上?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆