2015-08-19 2 views
2

У меня есть две модели пользователя и счет, гдеRails 4 таблицы доступа атрибуты из HAS_ONE ассоциации

class User < ActiveRecord::Base 
    has_one :account 
end 

class Account < ActiveRecord::Base 
     belongs_to :User 
    end 

в мой контроллер пользователей я извлекая пользователей по

@user = User.list('', false,'company', 'asc') 

где «список» является метод, описанный в моей модели для извлечения записей

в таблице пользователей У меня есть два столбца «id» и «company_name» , а в таблице учетных записей у меня есть столбцы как «user_id» и «страна»

Теперь я хочу @user массив, чтобы получить название компании и их страну, которую можно найти по user_id в таблице счетов

пожалуйста скажите мне, как я могу это сделать Thankx заранее

+0

Как выходные данные, которые вы хотите смотреть? – chumakoff

+0

, что, когда я пишу User.each do | f | f.company_name f.country end поэтому должно быть название компании со своей страной – user4965201

+0

Вы хотите связать только массив @user или я могу предложить другое решение, как получить пользователей? – chumakoff

ответ

3

Как насчет:

# app/models/user.rb 
class User < ActiveRecord::Base 
    has_one :account 

    scope :with_account_info, -> { includes(:account) } 
    default_scope{with_account_info} 
end 

Последние две строки могут быть объединены в один, если вы предпочитаете, т.е .:

default_scope{ includes(:account) } 

НТН

+0

будет ли запрос оставаться таким же? – user4965201

+1

Сфера применения - правильный подход. –

+1

@Anatoly Несколько раз отладка с помощью default_scope - ночная кобыла .. :) Лучше использовать именованный scope. –

4

в контроллере

@users = User.joins(:account) 

ИН ваш взгляд

@users.each do |user| 
    user.company_name 
    user.account.country 
end 
Смежные вопросы