2015-04-27 2 views
1

Я не могу найти правильный синтаксис для получения связанной информации. У меня есть модель «companyaccount», которая относится к модели компании.Rails Получение связанной информации

class Company < ActiveRecord::base 
    has_many :companyaccounts 
end 

class Companyaccount < ActiveRecord::base 
    belongs_to :company 
end 

В окне, я могу легко восстановить и «Companyaccount» «номер» и «идентификатор» ассоциированной компании через «company_id» поле «таблицы companyaccount».

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

The View вызывается из этого основного контроллера

def index 
    @companyaccount = Companyaccount.all 
end 

Теперь, я не хочу иметь company_id но фактическое название компании (размещенную в таблице 'Компания'). Я сумел сделать это для одной конкретной компании, с помощью контроллера, как этот

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

, а затем в изменении вида

<%= companyaccount.company_id %> 

по

<%= company.name %> 

, но, конечно, это будет получить, для каждой компании, той же первой компании, а не каждой компании, связанной с корпоративным счетом. Может ли кто-нибудь предоставить мне соответствующий синтаксис для получения имени ассоциированной компании для каждого корпоративного аккаунта в «каждом» цикле моего представления? Благодарю.

ответ

0

Вы должны быть в состоянии добиться того, что вы хотите с этим контуром:

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

Для этого вы можете использовать делегат.

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

, а затем вы можете позвонить <%= companyaccount.company_name %>

0
def index 
    @companyaccount = Companyaccount.all 
end 

и ввиду

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

за меньше db звоните вам может изменить контроллер, например

@companyaccount = Companyaccount.includes(:company).all 
Смежные вопросы