Rails option_groups_from_collection_for_select странным образом - PullRequest
1 голос
/ 26 июля 2010

Хорошо, поэтому у меня есть оптимизация, которую мне нужно сделать на сайте Rails, но отношения не являются традиционными.Поэтому моя проблема в том, что мне нужен option_groups_from_collection_for_select для перехода из штата, а города указаны ниже.Обычно это может быть достигнуто, если штат имеет_много города, а город принадлежит_ штату.Проблема в том, что отношений там нет, и государство жестко закодировано в таблице.Например:

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           |

Таким образом, option_groups_from_collection_for_select ожидает State.all и City.all с отношениями, но я не знаю, что мне нужно, чтобы получить все данные, чтобы сделать

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

1 Ответ

2 голосов
/ 26 июля 2010

Просто установите отношения между государством и городом с помощью пользовательских ключей.Вот так:

Под государством:

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

под городом:

belongs_to :state,  :primary_key => :abbr, :foreign_key => :state
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...