ruby-on-rails - 在 Rails 3 中通过范围和关联保持 DRY

标签 ruby-on-rails ruby-on-rails-3 scope associations arel

以下是相关事实:

  1. 每个主题 有很多 评论

  2. Comment 模型有一个名为 very_popular范围,我们假设它涉及比较其多个列。

    def self.very_popular
      # lots of cool stuff
    end
    
  3. Topic 模型有一个名为 excitingscope,其中包括具有 的所有 topic >very_popular 评论

第三点是我陷入困境的地方。下面的结果是缺少方法异常,虽然听起来很可怜​​,但我不知道还能尝试什么!

def self.exciting
  join(:comments).very_popular
end

如何在 Topic 模型范围中重用 Comment 模型中的 very_popular 范围?

最佳答案

您不能直接使用其他模型的范围。您可以做的就是合并查询。 Topic.joins(:comments).merge(Comment.very_popular)

Ryan 在这里进行了精彩的解释:http://railscasts.com/episodes/215-advanced-queries-in-rails-3

关于ruby-on-rails - 在 Rails 3 中通过范围和关联保持 DRY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6742433/

相关文章:

ruby-on-rails-3 - 我们可以使用精炼系统进行用户身份验证吗

mysql - 亚马逊网络服务 mysql2 数据库

javascript - js : accessing scope of parent class

ruby-on-rails - 我可以在 database.yml 中指定 rails 环境应该对数据库具有只读访问权限吗?

ruby-on-rails - 如何在一台服务器上运行多个微型 Rub​​y (Rack) 应用程序?

javascript - Rails 6 中 Jquery 的具体化问题

ruby-on-rails - 为什么 Controller 应该使用 notify_airbrake 而不是 Airbrake.notify

rubygems - 如何在 Rails 3 中重新加载所有 gem ?

python - 嵌套函数如何更改其封闭函数的实例变量?

python装饰器修改当前范围内的变量