2010-04-20 8 views
1

J'ai un named_scope dans des rails qui trouve des épisodes par là les directeurs de nom donnénamed_scope et substings

named_scope :director_given, lambda { |dr| {:joins => :director, :conditions => ['given = ?', dr]} } 

Il fonctionne très bien, mais je voudrais que cela fonctionne aussi sur un sous-chaînes le nom. par exemple. Au lieu d'avoir à chercher "Lucy", vous pouvez simplement chercher "Lu".

P.S. J'ai aussi une autre portée nommée qui fait exactement la même chose mais sur le nom de famille des directeurs. Il existe un moyen de combiner les deux?

Merci,

Répondre

2

Quelque chose comme

named_scope :director_given, lambda { |dr| {:joins => :director, :conditions => ['given LIKE ?', "%#{dr}%"]} } 

Deuxième question:

named_scope :director_given, lambda { |dr| {:joins => :director, :conditions => ['first_name LIKE ? OR second_name LIKE ?', "%#{dr}%", "%#{dr}%"]} } 
+0

Merci, j'ai essayé cela, mais lorsque vous essayez de l'utiliser dans la console que je reçois cette erreur: ActiveRecord :: StatementInvalid: SQLite3 :: SQLException: près de "%": erreur de syntaxe: SELECT "épisodes". * FROM "épisodes" INNER JOIN "personnes" ON "personnes" .id = "episodes" .director_id A ND ("people". "Type" = 'Directeur') WHERE (donné =% 'Lucy'%) J'ai essayé de changer le = à LIKE mais j'ai juste la même erreur – philb28

+0

Mis à jour ma réponse. –

+0

Merci, ça marche super !! À la votre! – philb28

Questions connexes