2015-08-19 2 views
2

j'ai deux modèles utilisateur et compte lorsqueRails 4 table d'accès attributs de l'association has_one

class User < ActiveRecord::Base 
    has_one :account 
end 

class Account < ActiveRecord::Base 
     belongs_to :User 
    end 

dans mon contrôleur utilisateurs Je suis récupérer les utilisateurs par

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

où la « liste » est méthode décrite dans mon modèle pour récupérer les enregistrements

dans la table des utilisateurs j'ai deux colonnes "id" et "company_name" et dans la table de compte j'ai les colonnes comme « user_id » et « pays »

maintenant je veux le @user tableau pour récupérer le nom de l'entreprise et leur pays qui se trouve par user_id dans le tableau des comptes

s'il vous plaît me dire comment puis-je faire thankx à l'avance

+0

Comment les données de sortie que vous voulez devrait ressembler? – chumakoff

+0

que lorsque j'écris User.each do | f | f.company_name f.country fin Il devrait donc y avoir un nom de société avec leur pays – user4965201

+0

Voulez-vous boucler votre tableau @user seulement ou je peux offrir une autre solution pour récupérer des utilisateurs? – chumakoff

Répondre

3

Que diriez-vous:

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

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

Les deux dernières lignes pourraient être fusionnés en un si vous préférez que, i.e. .:

default_scope{ includes(:account) } 

HTH

+0

la requête restera-t-elle la même? – user4965201

+1

portée est la bonne approche. –

+1

@ Anatoly Parfois, le débogage avec default_scope est night mare .. :) Il vaut mieux utiliser scope nommé. –

4

dans votre contrôleur

@users = User.joins(:account) 

La vue dans votre

@users.each do |user| 
    user.company_name 
    user.account.country 
end