Ruby on rails _和_属于_许多人选择前7名吗

Ruby on rails _和_属于_许多人选择前7名吗,ruby-on-rails,has-and-belongs-to-many,Ruby On Rails,Has And Belongs To Many,我想选择habtm关联的前7个元素 我正在为一个开源项目WPScan创建WordPress漏洞数据库 存在易受攻击的WordPress、插件和主题 因此,一个WordPress、一个插件和一个主题可能有许多漏洞,而一个漏洞可能会影响许多WordPress、插件和主题 我想在视图中执行的操作是: 显示影响WordPress的前7个漏洞。 显示影响插件的前7个漏洞。 显示影响主题的前7个漏洞。 以下是漏洞模型: class Vulnerability < ActiveRecord::Base

我想选择habtm关联的前7个元素

我正在为一个开源项目WPScan创建WordPress漏洞数据库

存在易受攻击的WordPress、插件和主题

因此,一个WordPress、一个插件和一个主题可能有许多漏洞,而一个漏洞可能会影响许多WordPress、插件和主题

我想在视图中执行的操作是:

显示影响WordPress的前7个漏洞。 显示影响插件的前7个漏洞。 显示影响主题的前7个漏洞。 以下是漏洞模型:

class Vulnerability < ActiveRecord::Base
  has_and_belongs_to_many :plugins
  has_and_belongs_to_many :themes 
  has_and_belongs_to_many :wordpresses

  default_scope :order => 'created_at DESC'
end
以上返回错误:

undefined method `vulnerability_ids' for #<Vulnerability:0x00000103152828>
undefined method `vulnerabilities' for #<ActiveRecord::Relation::ActiveRecord_Relation_Wordpress:0x0000010628d5c8>
编辑--

下面是另一个不起作用的示例:

<%= Wordpress.all.vulnerabilities %>
以上返回错误:

undefined method `vulnerability_ids' for #<Vulnerability:0x00000103152828>
undefined method `vulnerabilities' for #<ActiveRecord::Relation::ActiveRecord_Relation_Wordpress:0x0000010628d5c8>
或者,如果在较旧的rails中

has_and_belongs_to_many :plugins, :order => "created_at DESC", :limit => 7
编辑:

好吧,那你就不能这么做吗 控制器:

@wordpresses = Wordpress.order("created_at desc").limit(7)
视图:


谢谢你的评论。我可能解释得不好。我并不总是想要前7个插件、主题、WordPress,但在这个特殊的例子中,我想要。有时我需要所有的。我遇到的麻烦是选择视图或控制器中存在漏洞的前X个WordPress,如果这是最合适的位置。已编辑,但我现在有点困惑,不知道如何处理示例。编辑后的代码将得到前7个字,然后将所有附加到它们的漏洞转储掉。非常感谢!你的编辑示例成功了!我不知道为什么这对我不起作用。。。在控制器中使用@WordPress=WordPress.all是否会产生差异?是的,因为WordPress.all正在加载一个activerecord关系,其中包含单个WordPress。有相关漏洞的是各个WordPress。我没有很好地解释,但希望你能理解我的意思。你可以进行以下查询:脆弱性。查找\u byid:@wordpress.limit7。拔毛:脆弱性\u id谢谢!我从这段代码SQLite3::SQLException中得到以下错误:没有这样的列:漏洞\u id:从WordPress LIMIT 7中选择漏洞\u id,但下面的示例似乎有效。
<% @wordpresses.each do |wordpress| %>
  <% wordpress.vulnerabilities.each do |vulnerability| %>
    <%= vulnerability.title %>
  <% end %>
<% end %>