0

我使用预先存在的数据库制作应用程序,我设置了 database.yml 以使用该数据库。

数据库.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

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

谢谢你的帮助 :)

4

1 回答 1

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

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

于 2013-10-10T21:53:29.550 回答