Jas*_*ett 24 mysql ruby-on-rails
我有一个用PHP/MySQL(symfony,具体)编写的应用程序,我(可能)喜欢在Rails中重写.我知道如何为尚不存在的表创建脚手架,但是如何让Rails读取我现有的表结构并基于此创建脚手架?
更新:事实证明我可以运行以下命令让Rails为我生成模型:
rails generate scaffold Bank --no-migration
Run Code Online (Sandbox Code Playgroud)
但它并没有给我形式.我更喜欢给我形式的东西.
Jas*_*ett 29
答案是db:schema:dump.
http://guides.rubyonrails.org/migrations.html
Sco*_*ott 11
最简单的方法是假装您正在编写一个具有类似数据库模式的新应用程序 - 然后您可以考虑使用旧模式创建模型和迁移,但不受其限制.在稍后阶段,您可以创建数据库迁移脚本以将所有旧数据复制到新架构中.
我现在正在这样做.这种方法的好处是,您可以利用Rails(包括脚手架)提供的所有快速开发工具和技术,而不会因为尝试改造到完全相同的模式而减慢速度.
但是,如果您确定不喜欢这种方法,并且确实需要将新模型映射到现有表,则活动记录提供了许多配置选项,您可以在其中覆盖约定优于配置命名模式和将模型名称映射到表名称,设置奇怪命名的ID字段等.例如:
class Mammals < ActiveRecord::Base
set_table_name "tbl_Squirrels"
set_primary_key :squirrel_id
end
Run Code Online (Sandbox Code Playgroud)
上面将帮助Rails尝试读取您现有的表,但成功将取决于现有表结构与Rails约定的匹配程度.您可能必须提供更多配置信息才能使其正常工作,即使这样也可能无法正常工作.
最后,可能值得考虑使用DataMapper,我认为它比ActiveRecord更适合现有的棕色地带数据库,因为它允许您映射所有内容,但当然如果您还不知道它,您将需要学习该API .