0

首先,我的模型:

User has_many :subscriptions
     has_many :courses, :through => :subscriptions

Subscription belongs_to :both

Course has_many :subscriptions
       has_many :users, :through => :subscriptions

获取用户订阅的课程很容易:

@subscribed_courses = current_user.courses

现在,我想获取与 current_user 没有关联的 5 个随机课程的列表(对于用户主页上的“您可能还喜欢...”功能)。最好的方法是什么?选择所有课程然后在 ruby​​ 中将散列限制为仅不在@subscribed_courses实例变量中的课程是否有效?如果这是最好的方法,我会怎么做?

编辑:

例如,Course.joins(:subscription)会给我与订阅相关的所有课程。我想查询用户未订阅的课程,包括尚未订阅的课程(因此,与订阅无关)。抱歉,我之前没有说得更清楚。

4

1 回答 1

1
Course.joins(:subscriptions).where('subscriptions.user_id <> ?', current_user.id).order('random()').limit(5)
于 2012-11-11T01:22:13.000 回答