0

插件模型:

class Plugin < ActiveRecord::Base
    belongs_to :report
    has_many :vulns
end

漏洞模型:

class Vuln < ActiveRecord::Base
    belongs_to :plugins
end

我在 Rails 中执行以下操作:

#using * for now to select everything    
@data = Plugin.select("*").joins(:vulns).where('plugins.id'=> plugin.plugin_id)

在终端中执行以下查询:

SELECT * FROM `plugins` INNER JOIN `vulns` ON `vulns`.`plugin_id` = `plugins`.`id` WHERE `plugins`.`id` = 186

这是正确的查询,但它没有从 vulns 表中选择内容。我知道这是正确的查询,因为我在 phpmyadmin 中尝试过,它也返回了 vulns 表上的数据。当我在 rails(使用<%= debug(@data) %>)中执行此操作时,它仅显示插件表中的内容。

如何让它也从 vulns 表中选择所有内容?(每个插件都有多个漏洞)

4

1 回答 1

0

显然你不能有一个名为“type”的列。

如果有人有类似的问题,请重命名名为“类型”的列。我生成了一个新的迁移:

rails g migration RenameColumnOnVulnsTable

然后添加以下内容:

def change
  rename_column :vulns, :type, :vulnerability_type
end

查询现在工作正常。

于 2013-07-11T18:38:44.707 回答