我有两个模型.ReportServer有一个属于并且有很多关系.我使用delegate创建了一个访问器方法,它允许Report查找其关联的Server.company_id.现在,我想在Report上运行一个查询,它允许我找到所有与特定Server相关联的Report,该Server的特定company_id属性为5.

这是我的两个模型.是的,我知道当前的查询不起作用,因为Report没有属性company_id.

不,我不想在Report中存储company_id,因为这些信息不属于Report.

Report

class Report < ActiveRecord::Base

 belongs_to :server

 delegate :company_id, :to => :server

    class << self

        def method(url, base_url)
            #Report.where(company_id: 5)
        end
    end

end

Server

class Server < ActiveRecord::Base

 attr_accessible :company_id

 has_many :reports

end

推荐答案

您可以执行如下查询:

Report.joins(:servers).where(:servers => {:company_id => 5})

对我来说,这是原始SQL的更干净的解决方案.

Ruby-on-rails相关问答推荐

为什么没有生成命名空间路由?

Grape api (rails) - 未初始化常量 Endpoints::TodoAPI (NameError)

从Rails中的字符串中间提取子字符串

如何在测试期间为 Rails 应用程序启用 Rails.cache 会话对象

ruby on rails 中的自定义关联

ArgumentError:您需要使用 :if 提供至少一个验证

验证以确保唯一性但忽略空值?

如何在 Ruby on Rails 中创建一个锚点并重定向到这个特定的锚点

rails4 未知编码名称 - CP720

Ruby on Rails 取消首字母大写

rails回形针和乘客`'识别'命令无法识别`

设计自定义路由和登录页面

如何在 Ruby 中生成随机日期?

如何打印出范围之间的随机数?

Rails 4模块的未初始化常量

Ruby:如何将一种方法接收到的所有参数和块传递给另一种方法?

让 bundler 为不同的平台使用不同的 gem

如何为 Rails 迁移定义布尔字段

使用 Rspec 测试关联的正确方法?

如何为 Rails 控制器添加延迟以进行测试?