RoR活动记录关联查询条件

时间:2012-05-31 10:20:11

标签: ruby-on-rails activerecord conditional-statements

我要做的是以下内容: 假设我们有一个帖子可能有很多问题和答案,其中问题和答案都属于某个帖子。我想弄清楚的是如何将少于5个问题和答案的帖子放在一起。

类似的东西:

@posts = Post.where(post.questions + post.answers < 5)

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

您可以在桌面上创建一个新字段,用于保存帖子的问题和答案的总和。这可以使用这样的回调来完成:

  class Post < ActiveRecord::Base
    ...

    # After you've created the sum field (migration etc.)
    before_save do |post|
      post.sum = post.questions.count + post.answers.count
    end
  end

然后在您的控制器中,您可以执行@posts = Post.where('sum < 5')

答案 1 :(得分:0)

查看Squeel: http://erniemiller.org/projects/squeel/

允许在查询中遍历关联以及许多其他内容。