簡體   English   中英

Rails:使用.join()從多個表中選擇

[英]Rails: Selecting from multiple tables using .join()

插件型號:

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表中選擇所有內容? (每個插件都有多個漏洞)

顯然,您不能有一個名稱為“ type”的列。

如果有人遇到類似問題,請重命名“類型”列。 我產生了一個新的遷移:

rails g migration RenameColumnOnVulnsTable

然后添加以下內容:

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

該查詢現在工作正常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM