论坛首页 编程语言技术论坛

Migrations流水帐

浏览 10567 次
该帖已经被评为良好帖
作者 正文
   发表时间:2009-07-14  
还可以在migration文件里使用自定义helper,helper文件可以放到lib目录下
使用extend加载外部helper
附上一个添加移除外键的代码
初学rails,代码拙了点
module MigrationHelpers
  # Add foreign key for migrations
  # Usage:
  # * /db/migrate/xxxx_create_users.rb
  # class CreateUsers < ActiveRecord::Migration
  #   extend MigrateionHelpers
  #   def self.up
  #     ...
  #     add_foreign_key :users, :group_id :groups
  #   end
  #   def down.up
  #     ...
  #     remove_foreign_key  :users, :group_id
  #   end
  # end
  #
  
  def add_foreign_key(from_table, from_column, to_table, to_column = 'id')
    constraint_name = "fk_#{from_table}_#{from_column}"
    execute "ALTER TABLE #{from_table} ADD CONSTRAINT #{constraint_name} FOREIGN KEY (#{from_column}) REFERENCES #{to_table} (#{to_column})"
  end
  
  def remove_foreign_key(from_table, from_column)
    constraint_name = "fk_#{from_table}_#{from_column}"
    execute "ALTER TABLE #{from_table} DROP CONSTRAINT #{constraint_name}"
  end
end
1 请登录后投票
   发表时间:2009-08-14  
再来补充一下这个贴子,发现下面的在开发阶段也用的很多:
db:migrate:down VERSION=9999999999
0 请登录后投票
   发表时间:2009-08-14  
netfork 写道
再来补充一下这个贴子,发现下面的在开发阶段也用的很多:
db:migrate:down VERSION=9999999999


NetBeans真的是很绝!




  • 大小: 17.8 KB
  • 大小: 20.6 KB
0 请登录后投票
   发表时间:2009-08-14  
gokure 写道
还可以在migration文件里使用自定义helper,helper文件可以放到lib目录下
使用extend加载外部helper
附上一个添加移除外键的代码
初学rails,代码拙了点
module MigrationHelpers
  # Add foreign key for migrations
  # Usage:
  # * /db/migrate/xxxx_create_users.rb
  # class CreateUsers < ActiveRecord::Migration
  #   extend MigrateionHelpers
  #   def self.up
  #     ...
  #     add_foreign_key :users, :group_id :groups
  #   end
  #   def down.up
  #     ...
  #     remove_foreign_key  :users, :group_id
  #   end
  # end
  #
  
  def add_foreign_key(from_table, from_column, to_table, to_column = 'id')
    constraint_name = "fk_#{from_table}_#{from_column}"
    execute "ALTER TABLE #{from_table} ADD CONSTRAINT #{constraint_name} FOREIGN KEY (#{from_column}) REFERENCES #{to_table} (#{to_column})"
  end
  
  def remove_foreign_key(from_table, from_column)
    constraint_name = "fk_#{from_table}_#{from_column}"
    execute "ALTER TABLE #{from_table} DROP CONSTRAINT #{constraint_name}"
  end
end

有两个问题:
1,rails 里需要自己指定外键吗?
2,你这样写在helper 里面和script/generate migration add_fk 比的好处在哪?
0 请登录后投票
   发表时间:2009-08-14  
netfork 写道
netfork 写道
再来补充一下这个贴子,发现下面的在开发阶段也用的很多:
db:migrate:down VERSION=9999999999


NetBeans真的是很绝!






Netbeans 确实是功能强劲,不过一般都是在终端下执行rails命令行,netbeans专门用来写代码就好了.
0 请登录后投票
   发表时间:2009-08-15  
现在的做法都是把备用数据写成rake脚本,出现问题的时候直接drop掉db,再create,
保证数据库里面的数据是最干净的
0 请登录后投票
   发表时间:2009-09-14  
学习了
我现在用一点测试数据,偶尔迁移下,用的命令是:
dropdb XXX -U postgres
createdb XXX -U postgres
rake db:migrate
0 请登录后投票
   发表时间:2009-09-15  
对了,现在数据导出导入有什么较好的做法没,比如在dev时生成了一些数据,打算以后导入到production环境中用
0 请登录后投票
   发表时间:2009-09-15  
如果数据还要.... 我的做法通常都是在数据库级别做...
mysql 下用dump还是很方便的....

0 请登录后投票
   发表时间:2009-09-15  
呵呵..Rails guide做得不错...弥补了当年文档不够好(相对Django)的缺陷....  写Rails guide有奖金哦...谁有兴趣试过?
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics