2010-07-25 2 views
1

Ok, donc j'ai une optimisation que je dois faire sur un site Rails mais les relations ne sont pas conventionnelles. Donc, mon problème est que j'ai besoin d'un option_groups_from_collection_for_select pour aller de l'état et les villes sont ci-dessous. Cela peut normalement être réalisé si l'Etat a de nombreuses villes et la ville appartient à un Etat. Le problème est que les relations ne sont pas là et que l'État est codé en dur dans la table. Par exemple:Rails option_groups_from_collection_for_select d'une manière étrange

select * from states; 
+----+----------------------+------+ 
| id | name     | abbr | 
+----+----------------------+------+ 
| 2 | Alabama    | AL | 
| 3 | Alaska    | AK | 
| 4 | Arizona    | AZ | 
| 5 | Arkansas    | AR | 


select * from cities; 
+-------------------------+-------+----------------------+ 
| name     | state | permalink   | 
+-------------------------+-------+----------------------+ 
| Orlando     | FL | orlando-fl   | 
| West Palm Beach   | FL | west-palm-beach-fl | 
| Tampa     | FL | tampa-fl    | 
| Ft. Lauderdale   | FL | ft-lauderdale-fl  | 
| Jacksonville   | FL | jacksonville-fl  | 
| Atlanta     | GA | atlanta-ga   | 

Ainsi, le option_groups_from_collection_for_select attend un State.all et City.all des relations, mais je ne sais pas ce que je dois obtenir toutes les données pour faire la

option_groups_from_collection_for_select(@state, :cities, :name, :id, :name, 3) 

Répondre

2

Juste mettre en place la relation entre l'état et la ville avec des clés personnalisées. Comme si:

Sous État:

has_many :cities, :primary_key => :abbr, :foreign_key => :state 

en ville:

belongs_to :state, :primary_key => :abbr, :foreign_key => :state 
Questions connexes