0

プラグイン モデル:

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

脆弱性モデル:

class Vuln < ActiveRecord::Base
    belongs_to :plugins
end

私はレールで次のことをしています:

#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

どうやら「タイプ」という名前の列を持つことはできません。

誰かが同様の問題を抱えている場合は、「タイプ」という列の名前を変更してください。新しい移行を生成しました:

rails g migration RenameColumnOnVulnsTable

そして、以下を追加しました。

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

クエリは正常に動作します。

于 2013-07-11T18:38:44.707 に答える