Rails:来自多个类的链式数据库查询

时间:2014-03-01 01:51:30

标签: sql ruby-on-rails ruby activerecord scope

我有一个应用程序,旨在通过相同的用户字段对所有用户文章进行排序。例如,如果用户想要查看具有类似职业的用户的所有其他用户文章。每个用户在数据库中都有一个职业(字符串)字段。我已经能够使用此查询过滤所有具有相同职业的用户:

similar_users = User.where(occupation: current_user.occupation)

我没有通过similar_users过滤他们的文章。文章的author_id等于user.id

我尝试过诸如Articles.similar_usersArticles.similar_users.where(author_id: user.id)Article.all.where(author_id: similar_users.id)之类的链,但它们不起作用并且正确如此。我怎么去链接这些课程?是否有更有效的方法,例如将命名范围与lambdas一起使用?

在Article.rb

  belongs_to(
  :user,
  class_name: "User",
  foreign_key: :author_id,
  primary_key: :id
  )

在User.rb中

has_many(
:articles,
class_name: "Article",
dependent: :destroy
)

1 个答案:

答案 0 :(得分:2)

你需要像

这样的东西
Article.includes(:user).where("users.occupation = ?", current_user.occupation)