在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本章节展开对model的介绍:包括查增删改操作。紧接着上面一节《[ruby on rails] 跟我学之HelloWorld》 使用命令创建模型创建表post,默认自带两栏位 title :string, content:text , 在模型里面按照约定使用单数post而不是复数posts cd blog rails g model post title:string content:text 输出: invoke active_record create db/migrate/20141203105453_create_posts.rb create app/models/post.rb invoke test_unit create test/models/post_test.rb create test/fixtures/posts.yml db/migrate/20141203105453_create_posts.rb文件内容如下: class CreatePosts < ActiveRecord::Migration def change create_table :posts do |t| t.string :title t.text :context t.timestamps end end end 以上只是生成了迁移文件,而没有正式生成数据库。 需要运行以下指令来生成数据库。 rake db:migrate 相当于django的syncdb。 输出如下: == 20141203105453 CreatePosts: migrating ====================================== -- create_table(:posts) -> 0.0021s == 20141203105453 CreatePosts: migrated (0.0029s) =============================
从控制台访问模型进入控制台,类似于django的manage shell指令,ror使用以下指令: rails console 简写为 rails c 新增记录:模型类.new -> 模型实例变量.save 2.1.5 :001 > p = Post.new(:title => "My First Post", :context=>"this is my first post") => #<Post id: nil, title: "My First Post", context: "this is my first post", created_at: nil, updated_at: nil> 2.1.5 :002 > p.save() (0.5ms) begin transaction SQL (0.7ms) INSERT INTO "posts" ("context", "created_at", "title", "updated_at") VALUES (?, ?, ?, ?) [["context", "this is my first post"], ["created_at", "2014-12-03 11:44:50.954572"], ["title", "My First Post"], ["updated_at", "2014-12-03 11:44:50.954572"]] (23.0ms) commit transaction => true 模型类.create 2.1.5 :003 > Post.create(:title => "create test", :context=>"test of create") (0.2ms) begin transaction SQL (0.4ms) INSERT INTO "posts" ("context", "created_at", "title", "updated_at") VALUES (?, ?, ?, ?) [["context", "test of create"], ["created_at", "2014-12-03 11:48:08.779270"], ["title", "create test"], ["updated_at", "2014-12-03 11:48:08.779270"]] (21.9ms) commit transaction => #<Post id: 2, title: "create test", context: "test of create", created_at: "2014-12-03 11:48:08", updated_at: "2014-12-03 11:48:08"> 查询记录模型类.all 2.1.5 :004 > posts = Post.all Post Load (0.6ms) SELECT "posts".* FROM "posts" => #<ActiveRecord::Relation [#<Post id: 1, title: "My First Post", context: "this is my first post", created_at: "2014-12-03 11:44:50", updated_at: "2014-12-03 11:44:50">, #<Post id: 2, title: "create test", context: "test of create", created_at: "2014-12-03 11:48:08", updated_at: "2014-12-03 11:48:08">]> 模型类.find(id) 2.1.5 :005 > post = Post.find(2) Post Load (0.6ms) SELECT "posts".* FROM "posts" WHERE "posts"."id" = ? LIMIT 1 [["id", 2]] => #<Post id: 2, title: "create test", context: "test of create", created_at: "2014-12-03 11:48:08", updated_at: "2014-12-03 11:48:08"> 可以用[实例变量].[成员变量]的方式访问数据,如下: 2.1.5 :006 > post.title => "create test" 2.1.5 :007 > post.context => "test of create"
更新记录模型实例变量.update -> 模型实例变量.save() 2.1.5 :008 > post.title = "test update" => "test update" 2.1.5 :009 > post.save() (0.4ms) begin transaction SQL (1.2ms) UPDATE "posts" SET "title" = ?, "updated_at" = ? WHERE "posts"."id" = 2 [["title", "test update"], ["updated_at", "2014-12-03 11:57:08.964494"]] (10.0ms) commit transaction => true 模型实例变量.update_attribute(field,value) 2.1.5 :010 > post.update_attribute(:context,"test operation of update_attribute") (0.4ms) begin transaction SQL (1.4ms) UPDATE "posts" SET "context" = ?, "updated_at" = ? WHERE "posts"."id" = 2 [["context", "test operation of update_attribute"], ["updated_at", "2014-12-03 12:01:12.051869"]] (32.3ms) commit transaction => true 模型实例变量.update_attributes(hash) 2.1.5 :013 > post.update_attributes(:title=>"test update_attribute 2", :context =>"content for test of update_attribute 2") (1.4ms) begin transaction SQL (1.2ms) UPDATE "posts" SET "context" = ?, "title" = ?, "updated_at" = ? WHERE "posts"."id" = 2 [["context", "content for test of update_attribute 2"], ["title", "test update_attribute 2"], ["updated_at", "2014-12-03 12:05:16.878764"]] (26.1ms) commit transaction => true
删除记录模型实例变量.destroy 2.1.5 :016 > post.destroy (0.3ms) begin transaction SQL (1.3ms) DELETE FROM "posts" WHERE "posts"."id" = ? [["id", 2]] (23.6ms) commit transaction => #<Post id: 2, title: "test update_attribute 2", context: "content for test of update_attribute 2", created_at: "2014-12-03 11:48:08", updated_at: "2014-12-03 12:05:16">
转载请注明本文来自:http://www.cnblogs.com/Tommy-Yu/p/4141122.html,谢谢! |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论