生成使用数据库中预先存在的数据的模型

时间:2013-10-10 17:07:33

标签: mysql ruby-on-rails database

我使用预先存在的数据库创建应用程序,我设置了database.yml来使用数据库。

的database.yml

   development:
  adapter: mysql2
  encoding: utf8
 # database: ttlem_demo_development
  database: ttle
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
  adapter: mysql2
  encoding: utf8
  database: ttlem_demo_test
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

production:
  adapter: mysql2
  encoding: utf8
  database: ttlem_demo_production
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock

我只想要一个数据库中的一个表,它被称为帐户视图,我尝试使用所有正确的字段为此生成一个脚手架,但它告诉我需要迁移(当我在浏览器中呈现它时),如果我迁移我将无法使用现有数据,这是正确的吗?如何制作将使用现有数据和字段的模型?

感谢您的帮助:)

1 个答案:

答案 0 :(得分:0)

要尝试两件事:......  #1在没有迁移的情况下运行你的脚手架,所以它不会认为你错过了一个。

rails g scaffold yourmodelname fieldone:fieldtype ... etc  --no-migration

#2如果这不起作用,你可以走很长的路,但是使用有效的架构版本号转储和重新加载

将此数据库添加到yml到您的gemfile:

gem 'yaml_db', github: 'jetthoughts/yaml_db', ref: 'fb4b6bd7e12de3cffa93e0a298a1e5253d7e92ba'

适用于导​​轨3或导轨4。

执行当前数据库的模式转储,以便获得具有有效版本号的schema.rb。

bundle exec rake db:schema:dump

现在您有一个有效的架构转储数据。

 bundle exec rake db:data:dump

删除数据库(如果您愿意,可以使用mysql命令手动执行或运行rake db:drop)

现在使用您的架构文件重新创建它。

 bundle exec rake db:schema:load

现在添加您的数据

bundle exec rake db:data:load

启动您的服务器并假设您的模型中的所有数据字段都正确匹配(因此从您的脚手架中设置了正确的强参数)您应该是好的。