Ruby / Rails - Доступ к таблице поиска без моделирования? - PullRequest
5 голосов
/ 08 ноября 2011

Это для проекта Ruby on Rails 3.0.x.

У меня есть «справочная» таблица с данными поставщика.

Когда я импортирую данные из другого источника, я хочу проверить эту таблицу (объединение в SKU) на наличие дополнительных данных.

Мне кажется неправильным создавать модель для этой таблицы в моем приложении. Данные никогда не будут изменены моим приложением, и им не нужно иметь никаких ассоциаций моделей помимо поиска данных, который я только что упомянул. К нему иногда обращаются, чтобы проверить информацию.

Каков наилучший способ доступа к этой таблице?

Спасибо.

Ответы [ 3 ]

10 голосов
/ 08 ноября 2011

Создание модели вокруг нее не повредит, но если вы хотите ее избежать, вам придется отправлять необработанные SQL-запросы в БД, чтобы получить данные в качестве альтернативы.

Необработанные запросы: Пример Rails raw SQL

С другой стороны, я думаю, что мотивация обернуть модель вокруг нее выходит за рамки того, хотите ли вы изменить ее.У меня определенно есть приложения, у которых есть модели вокруг таблиц, которые никогда не меняются (то есть список терминов, относящихся к конкретному приложению, список городов / штатов и другие статические данные, которые импортируются один раз и никогда не меняются).ActiveRecord также обернет столбцы в легкодоступные методы, чтобы вы могли легко читать эти данные, не говоря уже о всех удобных методах сортировки, поиска и т. Д.

2 голосов
/ 08 ноября 2011

Другой вариант - сохранить его в YML, а затем загрузить этот YML в константу в файле environment.rb.

Например:

 LOOK_UP_TABLE = YAML.load_file("#{RAILS_ROOT}/misc/vendor_data.yml")
1 голос
/ 08 ноября 2011

Почему не кажется правильным создать модель для ... модели? Если он есть в базе данных, нет причин не иметь модель для него.

Вы можете захотеть ограничить его определение resource или вообще не отображать его, чтобы избежать доступа. Тем не менее, вероятно, вы захотите обновить его: веб-интерфейс - это простой способ сделать это, независимо от того, управляется ли он файлом или пользователем.

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

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