2017-01-06 2 views
1

J'ai essayé des choses telles que:Je veux obtenir un tableau d'utilisateurs dont le nom commence par « x » en utilisant la console Rails

users=User.where :conditions => "last_name LIKE ?" "%X" 
and 
users=User.where("last_name.each_char.first = 'X'") 
and 
users=User.where(:last_name.to_s.char.first => "X") 
and 
users=User.where "last_name.initial" == "X" 
users=User.where("last_name".start_with ? "X") 
users=User.where("last_name".match(/^X/)) 
users=User.where(:last_name[0] == "X") 

et tout un tas de tentatives plus ratées. user.last_name est une chaîne valide, et je pense que je comprends pourquoi: last_name, qui est un symbole, ne fonctionnait pas, donc j'ai aussi fait « last_name » [0] et: last_name.to_a [0]

Certaines des tentatives, comme celle-ci

[64] pry(main)> user=User.where("last_name[0] = 'X'").all 
User Load (0.9ms) SELECT "users".* FROM "users" WHERE (last_name[0]  = 'X') 
=> #<User::ActiveRecord_Relation:0x3723938> 

retourné une relation d'enregistrement actif Toute aide la plus appréciée!

Répondre

2

Vous étiez proche! Essayez: User.where('last_name like ?', 'x%').

+0

Pour plus de contexte, la clause where est exécutée sur la base de données, pas dans ruby ​​/ rails, vous devez donc utiliser la syntaxe appropriée, probablement sql. – daryn

+0

Garçon j'ai dansé tout autour de celui-là! Merci beaucoup Daryn. –