2016-02-24 1 views
2

Pourriez-vous me dire comment changer le nom du champ?concaténer les noms de champs en ruby ​​

D'abord, je fais une recherche des données comme ceci:

u = User.find_by_id(111) 

Il fournira un ensemble de données comme ceci:

u.id,u.foo,u.bar 

Mais, je veux changer un résultat au-dessous: ("nom "est concaténation de u.foo + u.bar)

u.id,u.name 

Répondre

1

Vous pouvez définir une méthode dans le modèle user comme Follo ws:

class User < ActiveRecord::Base 
    def name 
    self.foo + ' ' + self.bar 
    end 
end 
+0

Merci beaucoup! C'est du travail. Mais je me demande s'il y a un moyen de changer le nom du champ depuis le côté sql? tout comme vous sélectionnez u.id, "u.foo + u.bar" comme nom de l'utilisateur –

+1

Vous pourriez, en utilisant 'find_by_sql', mais perdriez les avantages de' active_record'. – Dharam

1

Vous devez utiliser # lors de l'adhésion de deux champs avec différents types de données.

Par exemple, l'ajout d'un nombre entier et chaîne avec + donnera une erreur.

Alors mieux vaut l'utiliser de cette façon.

class User < ActiveRecord::Base 
    def name 
    "#{foo} #{bar}" 
    end 
end 

Espérons que le détail vous aide.

+0

qu'est-ce que 'foo' est nul? –

+0

Il va imprimer seulement 'bar' – techdreams

+0

Oui, je vois, mais le nom aura un espace inattendu! –