[Ruby on Rails] and I learned the change and delete operation based on Rails console

Source: Internet
Author: User
Tags ruby on rails



This chapter launches the introduction of model: including check and delete operation. And then the above section, [Ruby on Rails] and I learned the HelloWorld


Creating models using commands to create models


Create a table post, default comes with two field title:string, Content:text, use the singular post instead of the plural in the model by convention posts


cd blog
rails g model post title:string content:text


Output:


  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


The contents of the Db/migrate/20141203105453_create_posts.rb file are as follows:


class CreatePosts < ActiveRecord::Migration
  def change
    create_table :posts do |t|
      t.string :title
      t.text :context

      t.timestamps
    end
  end
end


The above is just a migration file generated, not a formal database build. You need to run the following command to build the database.


Rake Db:migrate


Equivalent to Django's syncdb. The output is as follows:


== 20141203105453 CreatePosts: migrating ======================================
-- create_table(:posts)
   -> 0.0021s
== 20141203105453 CreatePosts: migrated (0.0029s) =============================







Accessing the model from the console


Entering the console, similar to the Django Manage Shell directive, ROR uses the following command:


Rails Console


Abbreviated to Rails C


New records:


Model class. New model instance variable. 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


Model class. 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">
Query records


Model class. 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">]>


Model class. 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">


You can use the [instance variable].[ Member variable] to access the data as follows:


2.1.5 :006 > post.title
 => "create test"
2.1.5 :007 > post.context
 => "test of create"




Update record


Model instance variable. Update, model instance variable. 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


Model instance variable. 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


Model instance variable. 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




Deleting records


The model instance variable. 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">





Reprint please specify this article from: http://www.cnblogs.com/Tommy-Yu/p/4141122.html, thank you!



[Ruby on Rails] and I learned the change and delete operation based on Rails console


Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.