插件型号:
class Plugin < ActiveRecord::Base
belongs_to :report
has_many :vulns
end
Vulns模特:
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表中选择所有内容? (每个插件都有多个漏洞)
答案 0 :(得分:0)
显然,您不能拥有名称为“type”的列。
如果有人遇到类似问题,请重命名名为“type”的列。我生成了一个新的迁移:
rails g migration RenameColumnOnVulnsTable
然后添加以下内容:
def change
rename_column :vulns, :type, :vulnerability_type
end
现在查询工作正常。