Rails: создание моделей из существующих таблиц?
У меня уже есть таблицы, созданные из другого проекта. Их имена отформатированы как aaa_bbb_ccc_ddd (все не множественное число, а некоторые части не являются условным словом). Я успешно создал схему из базы данных, прочитав этой. Но теперь я должен сделать настоящие модели. Я смотрел на RMREБЫЛ, но они применяют соглашение ActiveRecord на моих таблицах и меняют их имена, что я не хочу делать, потому что другие приложения зависят от них таблицы.
каков наилучший способ автоматического создания моделей и схемы из существующих таблиц?
2 ответов
просто теория, не уверен, как это будет работать в реальных приложения:
создать models
назван ActiveRecord
конвенция требует, например для таблицы aaa_bbb_ccc_ddd
вы создадите модель AaaBbb
и сопоставьте эту модель с вашей таблицей:
class AaaBbb < ActiveRecord::Base
self.table_name = "aaa_bbb_ccc_ddd"
end
или более человеческий пример:
class AdminUser < ActiveRecord::Base
self.table_name = "my_wonderfull_admin_users"
end
теперь у вас будет AaaBbb
как ресурс в маршрутах означает, что у вас будет url-адрес:
.../aaa_bbb/...
и если вы хотите использовать имя таблицы в url I думаю, вы могли бы переписать маршруту:
get 'aaa_bbb_ccc_ddd/:id', "aaa_bbb#show", as: "aaa_bbb"
опять же, просто теория,которая может помочь вам. Я еще не работал с такими случаями, но начал бы с этого.
редактировать
to автоматизация создание модели из базы данных:
но я думаю, что это создаст модели по соглашению rails с именами wierd, которые вы будете должны использовать в качестве ресурса в приложении.
хороший шаблон, который я нашел на SO, если вы хотите использовать имя модели, отличное от имени таблицы:
class YourIdealModelName < ActiveRecord::Base
self.table_name = 'actual_table_name'
self.primary_key = 'ID'
belongs_to :other_ideal_model,
:foreign_key => 'foreign_key_on_other_table'
has_many :some_other_ideal_models,
:foreign_key => 'foreign_key_on_this_table',
:primary_key => 'primary_key_on_other_table'
end
альтернативное решение: https://github.com/wnameless/rare_map
Это не заставит вас изменить что-либо из ваших существующих таблиц.