Rails 关于 db 的疑问

tony · 2011年11月02日 · 最后由 wxianfeng 回复于 2011年11月18日 · 4750 次阅读

使用 rails g migration *** 会在 db/migrate 下生成一个 rb 文件 再用 rake db:migrate 会执行之前修改或创建的表

1,rails 是怎么判断执行刚才生成的 rb 的,而不是将以前的全部执行 2,可不可以维护一个 migration 文件?每次修改删除之前的表,执行这一个统一的 sql 文件,如同 mysql 的备份文件一样 3,db/schema.rb 是干什么用的?

关于掌握 Rails 的这种开发思路有没有比较直观的说明书籍或文档可推荐?

Thx

基本知道了 migrate 是 Active Record 来进行管理,具体版本在 schema_migrations 表中

http://guides.ruby.tw/rails3/migrations.html

这里讲的比较清楚

那个 Migration 文件后面不是又一长串数字么,这个一个时间戳,rake db:migrate 执行完成一个 Migration 文件以后会将这串数字存入数据库中的 schema_migrations 表里面。而再一次执行 rake db:migrate 的时候,Rails 会检测 schema_migrations 的最后条的版本

而那个时间戳是重大到小的,可以用来做一个顺序排列,Rails 只用中 schema_migrations.last 以后开始的文件开始执行就可以。所以这也是为什么那长串数字在前面。

我遇到的问题是自己建的数据库 users 表,用 omniauth 获取到数据可以保存到库了 但调用 devise 的 sign_in 时,出错,提示 undefined method `authorizations' 对于

user.authorizations << Authorization.new(:uid => auth['uid'])

这一句不是很理解

3 是 2 的答案,rake db:schema:load 就是载入 db/schema.rb

http://guides.rubyonrails.org/

另外用 gem 安装插件时都会提示 安装完文档,这个文档只能在文件夹中进行访问么? 能不能配置在当前的 doc 目录,直接通过 url 进行访问?

Gem 的 doc 我基本没在本地用过,全是上 http://rdoc.info 看的

运行 gem server,会在 8808 打开一个 web 服务

localhost:8808 可以看到自己装过的 gem 的文档。

不过我都是 google 的……

原理就是 schema_migrations

9 楼 已删除
需要 登录 后方可回复, 如果你还没有账号请 注册新账号