我使用预先存在的数据库创建应用程序,我设置了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
我只想要一个数据库中的一个表,它被称为帐户视图,我尝试使用所有正确的字段为此生成一个脚手架,但它告诉我需要迁移(当我在浏览器中呈现它时),如果我迁移我将无法使用现有数据,这是正确的吗?如何制作将使用现有数据和字段的模型?
感谢您的帮助:)
答案 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
启动您的服务器并假设您的模型中的所有数据字段都正确匹配(因此从您的脚手架中设置了正确的强参数)您应该是好的。