2010-04-09 10 views
0

Je n'arrive pas à faire fonctionner une étendue nommée en utilisant un attribut du modèle associé autre que la colonne id.Comment utiliser des étendues nommées avec des attributs de modèles associés AUTRES que l'ID

J'ai un modèle Firm qui a une colonne city_id. J'ai aussi un modèle City avec une colonne de nom.

Je veux obtenir urls reposants comme celui-ci de manière à utiliser la gemme has_scope et ont des contrôleurs maigres

http://localhost:3000/firms?by_city=Dublin 

Cependant, l'utilisation du présent code, je ne peux insérer la ville Id

http://localhost:3000/firms?by_city=546 

Voici mon named_route

class Firm < ActiveRecord::Base  
named_scope :by_city, proc {|city| { :conditions => { :city => city } } } 
end 

Toutes les idées sur la façon de modifier la portée du nom de o comme générer des urls en utilisant le nom serait grandement apprécié!

Merci,

Jack

Répondre

2

Vous aurez besoin d'ajouter belongs_to à la classe entreprise et pour le champ nommé ajouter une jointure sur la ville afin que vous puissiez obtenir au nom de la ville dans la requête. Quelque chose comme ça

class Firm < ActiveRecord::Base 
    belongs_to :city 
    named_scope :by_city, lambda {|city_name| {:joins => :city, :conditions => {:city => {:name => city_name}}}} 
end 
+0

Merci - cela fonctionne, mais nécessite une légère modification named_scope: by_city, lambda {| CITY_NAME | {: joins =>: city,: conditions => {: cities => {: nom => city_name}}}} –