Rails 检索关联信息

Rails retrieving associated information

我找不到正确的语法来检索相关信息。我有一个模型 'companyaccount' 属于模型 'company'.

class Company < ActiveRecord::base
  has_many :companyaccounts
end

class Companyaccount < ActiveRecord::base
  belongs_to :company
end

在视图中,我可以通过 [=32= 的 'company_id' 字段轻松检索关联公司的 'Companyaccount' 'number' 和 'id' ] table.

<%= @companyaccount.each do |companyaccount| %>
 <%= companyaccount.company_id %>
 <%= companyaccount.number %>
<% end %>

从这个基本控制器调用视图

def index
  @companyaccount = Companyaccount.all
end

现在,我不想拥有company_id而是公司的实际名称(位于'company'table)。我设法使用这样的控制器为一家特定公司做到这一点

def index
  @companyaccount = Companyaccount.all
  @company = Company.first
end

然后在视图中更改

<%= companyaccount.company_id %>

来自

<%= company.name %>

但是,当然,这将为每个公司帐户检索相同的第一家公司,而不是与公司帐户关联的每个公司。任何人都可以为我提供适当的语法来检索我视图的 "each" 循环中每个公司帐户的关联公司名称吗?谢谢。

您可以为此使用委托。

class Companyaccount < ActiveRecord::base
  belongs_to :company
  delegate :name, to: :company, prefix: true
end

然后你可以调用<%= companyaccount.company_name %>

你应该能够通过这个循环实现你想要的:

<%= @companyaccount.each do |companyaccount| %>
  <%= companyaccount.company.name %>
  <%= companyaccount.number %>
<% end %>
def index
  @companyaccount = Companyaccount.all
end

在视图中

<% @companyaccount.each do |companyaccount| %>
 <%= companyaccount.company.name %>
<% end %>

对于较少的数据库调用,您可以像

那样更改控制器
@companyaccount = Companyaccount.includes(:company).all