Rails 从关联表中提取

Rails pluck from associated tables

我有两个table 样本

has_many :abundances
self.primary_key = :sample_id

和 丰度

has_many :samples
self.primary_key = :sample_id

在丰富的控制器中,我进行了搜查

def index
@search = Abundance.ransack(params[:q])
@abundances = @search.result
@abundancez =  @abundances.paginate(:page => params[:page],:per_page => 100)
   end
end

在丰度视图中,我有一个基于搜查参数的过滤 table。

<%= will_paginate @abundancez%>
<% @abundancez.each do |abundance| %>

<td><%= abundance.sample_id %><td>
<td><%= abundance.length %><td>
<td><%= abundance.eff_length%><td>
<td><%= abundance.est_counts%><td>
<td><%= abundance.tpm%><td>


<%  end %>

示例 table 有一个字段,当通过对应于上面的过滤参数时,我想在丰度视图中提取它。

我试过在视图中使用 pluck

<%= will_paginate @abundancez%>
<% @abundancez.each do |abundance| %>

<td><%= abundance.sample_id %><td>
<td><%= abundance.length %><td>
<td><%= abundance.eff_length%><td>
<td><%= abundance.est_counts%><td>
<td><%= abundance.tpm%><td>
<td><%= samples.pluck(abundance.samples_id,:race)%></td>

但是我得到一个错误。不确定我是否以正确的方式解决这个问题,或者我的语法是否不正确。

谢谢!

这里的问题是你定义了丰度has_many个样本,所以你不能return一个样本的种族值就像你在这里做的那样。

正如您在评论中所说,您的联想似乎是错误的,将您的丰度模型从 has_may 更改为 belongs_to

belongs_to :sample

然后在您的视图中,您可以return这样的比赛值

<%= will_paginate @abundancez%>
<% @abundancez.each do |abundance| %>

<td><%= abundance.sample_id %><td>
<td><%= abundance.length %><td>
<td><%= abundance.eff_length%><td>
<td><%= abundance.est_counts%><td>
<td><%= abundance.tpm%><td>
<td><%= abundance.sample.race %></td>

这是因为您在评论中说丰度具有 sample_id 属性,所以丰度 belongs_to 是一个样本。当然,如果 abundance 具有 sample_id 的属性并填充了有效 ID(现有的一个样本),当然,它具有竞赛值,那么这将起作用。