Ruby on Rails,使用Rails Console进行ActiveRecord调试
在前文《Ruby on Rails,创建模型,附赠模型与表名不一致时的解决方法》中我们通过rails generate model Subject 方法创建了Subject类。继承自ActiveRecord的Subject自然就拥有自动的增删改查能力,我们接下来要基于这个模型进行一些实践。不过在这之前有必要预先熟悉一个Rails提供给我们的调试工具“rails console”。在他的帮助下我们能抛开Controller和View,直接拿着Model进行调试。
打开Rails的命令行,到应用的根目录,执行rails console启动。注意,要到Rails应用的根目录,我的是E:\greensoft\RailsInstaller\Sites\simple_cms>
E:\greensoft\RailsInstaller\Sites\simple_cms>rails console Loading development environment (Rails 3.2.1) irb(main):001:0>
回显的第一行提示了启动加载了Rails开发环境,之后显示的与irb没什么两样。接下来的操作其实就是普通的irb操作,只不过现在的这个irb,是能够访问当前rails应用的。先来几个普通的irb操作
E:\greensoft\RailsInstaller\Sites\simple_cms>rails console Loading development environment (Rails 3.2.1) irb(main):001:0> 1+2 => 3 irb(main):002:0> "abbuggy".upcase => "ABBUGGY" irb(main):003:0>
接下来,操作一下我们自定义的模型Subject。创建一个Subject的实例subject1,再把它保存到数据库中。
irb(main):001:0> subject1=Subject.new => #<Subject id: nil, created_at: nil, updated_at: nil> irb(main):002:0> subject1.save [1m[36m (0.0ms)[0m [1mBEGIN[0m [1m[35mSQL (16.0ms)[0m INSERT INTO `subjects` (`created_at`, `updated_at`) VALUES ('2012-09-03 16:31:39', '2012-09 -03 16:31:39') [1m[36m (27.0ms)[0m [1mCOMMIT[0m => true irb(main):003:0>
使用的new,save操作都是继承自ActiveRecord的,后面会详细了解这里只要知道是在创建和保存对象就ok。
你看,通过rails console短短几行代码就可以进行模型与数据库的交互操作,如果你需要向数据库中插入一批实验数据,这回很有帮助。
注意刚才进入rails console时候的回显Loading development environment (Rails 3.2.1),系统提示我们进入的是开发环境,这是缺省值。如果你希望进入其他的环境只需要在rails console后面跟上其他环境的名字。如rails consle production,不过当尝试进入已经上线运行的production环境是可得多加小心,不要把数据弄坏了。