Rails 3: Как правильно использовать Rails для создания пользовательских типов? - PullRequest
3 голосов
/ 22 марта 2012

Сейчас я делаю довольно сложную модель на Ruby on Rails, и мне было интересно, каков был правильный "Rails" способ создания "пользовательских типов" для атрибутов.Например, у меня есть таблица businesses, которая имеет строковый атрибут region.Но регион может быть только одним из предопределенных списков возможностей (которые впоследствии могут быть расширены).Мой вопрос: где я могу определить этот тип региона?

Я знаю, что мог бы создать конкретную таблицу regions (т. Е. Модель региона), в которой могли бы быть размещены все параметры, а затем я мог бы установить связьмодели, которые имеют регионы в этой таблице.Проблема заключается в том, что у меня в модели много таких типов, поэтому в моей базе данных более половины таблиц составляют «таблицы пользовательских типов», в которых хранятся только возможные значения для этих типов.Это практично?

Я также читал, что вы можете сделать это с помощью проверок (т. Е. Проверять при сохранении записи, чтобы переменные находились в пределах возможных значений).Это кажется очень непрактичным, так как я хочу сделать эту модель расширяемой, и представления формы должны будут загружать возможные значения типов в поля выбора и т. Д. Если бы я использовал этот метод, каждый раз, когда мне нужно было добавить новое возможное значение длятипа, я должен был бы изменить проверку и представления.

Есть ли стандартный способ сделать что-то подобное?Что-то вроде определения типов (может быть, моделей без поддержки БД?), Где я мог бы легко перечислить все возможные значения?

Спасибо за любую помощь или предложения по этому вопросу.Я уже давно беспокоюсь, когда работаю с приложениями RoR, и я устал от взлома.

1 Ответ

1 голос
/ 22 марта 2012

Я думаю, есть много разных способов сделать это.Лично я бы сделал все очень просто и СУХОЙ.

В инициализаторе установите массивы в глобальной области видимости:

REGIONS = ["region A", "region B", "region C"]

В моделях используйте проверки, как вы написали.Убедитесь, что значение находится в массиве REGIONS.

В представлениях используйте помощники Rails для заполнения выборок, радио и т. Д. Из массива REGIONS.Если у вас всегда один и тот же выбор, напишите свой собственный помощник region_select, например.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...