`
xxrrss
  • 浏览: 43274 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Rails的CRUD

    博客分类:
  • Ruby
阅读更多
CRUD分别指:C:Create R:Read U:Update D:Delete

描述的思路是通过代码来讲解。

C:
一:基本声明
an_article = Article.new
an_article.title = "金融危机"
an_article.content = "金融危机之前。。。。。。。。。。。。。。。"
an_article.save


二:代码快声明
Article.new do |a|
    a.title = "金融危机"
    a.content = "金融危机之前。。。。。。。。。。。。。。。"
    a.save
end


三:通过hash声明
an_article = Article.new(:name => "金融危机", :content => "融危机之前。。。。。。。。。。。。。。。")
an_article.save


Active Record为我们自动插入primary key.每次声明完,都调用了.save方法。否则,对象只能存在与内存中,不会保存到数据库。有个“偷懒”的方法,不用显式的调用save方法,采用create 方法。

四:
an_article = Article.create(:name => "金融危机", :content => "融危机之前。。。。。。。。。。。。。。。")
an_article.save


同时,还可以一次Create多个对象

五:
an_article = Article.create([{:name => "金融危机", :content => "融危机之前。。。。。。。。。。。。。。。"} , {:name => "金融危机第二波", :content => "冰岛,韩国,巴基斯坦破产。。。。。。。。。。。。。。。"}])
an_article.save


R:
最简单的方式是声明一个primary key,或者primary keys
Article.find(1)
articles = params[:article_ids];
Article.find(articles)


你也可以根据其他的查询条件,不一定要primary key来实现查询,这时需要用到conditions来实现了。
article = Article.find(:all, :condition => "title='金融危机'")
article = Article.find(:first, :condition => "title='金融危机'")


如果条件是动态的,且有多个条件:则有

 params[:cur_date]=Date.today
 params[:cur7]=(params[:cur1]-7)
 params[:site_id]=session['site_id']
 @orders=Order.find(:all,:conditions => ['updated_at = ? and site_id= ? and status=?',params[:cur_date],params[:site_id],params[:status]],:limit=>'4',:order=>'updated_at desc') 


模糊查询呢?
@article = Article.find(:all, :condition => ["title like ?", params[:title]+"%"])

看到以上的代码:可以对自己查询出来的结果加上各种各样的设置。主要的参数如下
:conditionsrder :limitffset :joins :select :reandonly :from
:group :lock
至于每个设置如何作用,请大家查看文档。

有的人或许不习惯采用orm这样的查询方式,对原生态sql情有独钟。这时,你可以采用find_by_sql方法。而查询出来结果的处理方式却很不一样。它返回一组模型数组,模型里的属性是查询出来的列组成。

a_articles=Article.find_by_sql(["select a.title,a.content,a.create_at from articles where id=?",params[:id]]);
first = a_articles[0];
first.attributes
first.attribute_names
first.attribute_present?("title")

来判断查询,和显示出来的内容。

rails1.2以来,rails提供了各种统计函数。如有需要,自查资料
很神奇的是:Active Record会根据模型类的属性自动生成find_by_XX,find_all_by_XX系列方法,来实现查询
Article.find_by_title
Article.find_all_by_title

不够需要注意的是:当你表中有xx_xx这样的属性时,忌用!


U
1:当一个对象已经存在时,save就update数据库中的对象。不存在时,就往数据库中插入一条数据.
@article = Article.find(1);
@article.title = "兽首拍卖"
@article.save


2:很多时候,我们更新的只是属性
@article = Article.find(1);
@article.update_attribute(:title,"兽首拍卖")

或者
@article = Article.find(1)
@article.update_attributes(:title=>"兽首拍卖",:content=>"收藏家XXX拍卖,拒绝付款");

或者:通过update方法,将查询和更新一下子完成
Article.update(1,:title=>"兽首拍卖",:content=>"收藏家XXX拍卖,拒绝付款")

同时,也可以批量更新
Article.update_all("update_at = '1998年'","title like %中国%")


D
1:类方法.delete
Article.delete(1)


2:实例方法destroy
@article = Article.find(1);
@article.destroy


3:批量删除
Article.destroy_all("create_at<?",20.days.ago)
Article.delete_all("create_at<?",20.days.ago)


两种方法的区别在于:delete方法直接操作数据库,绕过了Active Record的一些验证。而destroy方法,则保证了调用,一般选用destroy方法



分享到:
评论

相关推荐

    paperclip_heroku_aws:这是一个基本的 rails CRUD 应用程序,它演示了thoughtbot 的回形针 gem 与 heroku 和 AWS S3 的集成。 这个应用程序还包括使用 rspec 和 capybara 的单元和集成测试

    自述 这篇文章和教程提供了如何使用 Ruby/Rails 构建基本的创建/读取/更新/删除 (CRUD) 应用程序的背景知识。 这篇文章的重点是如何设置文件附件系统并将其投入生产,使用来自 Thoughtbot、Heroku 和 Amazon 为 ...

    daily-change:减少碳足迹计算器-Rails CRUD早期项目

    自述文件这个Rails应用程序将计算简单的生活方式变化将对他们产生的影响您的碳足迹。 故障排除:rails webpacker:安装那么“ rails s”应该起作用。 还护栏新的。 过去(不是上次)工作过。 该自述文件通常会记录...

    [Rails 常用插件简介]CRUD Generator 2

    **Rails 常用插件简介 - CRUD Generator 2** 在Ruby on Rails框架中,开发过程中经常需要创建、读取、更新和删除(CRUD)数据。为了提高开发效率,开发者通常会使用各种插件来自动化这个过程。CRUD Generator 2就是...

    ember_rest_example:一个简单的Rails应用程序,用于使用ember.js和ember-rest.js测试CRUD

    该应用程序本身是一个单页的Ember.js,用于Rails CRUD脚手架。 这是我正在创建的几个尝试Ember.js和不同持久性策略的示例之一。 我从以下示例中提取了超简单的ember-rest.js: : 安装 假设安装了bundler gem的...

    ejemplo_rails_crud:Crud Para Probar Ruby on Rail

    【ejemplo_rails_crud:Crud Para Probar Ruby on Rails】是一个基于Ruby on Rails框架的简单CRUD(创建、读取、更新、删除)应用程序示例。这个项目旨在帮助开发者了解如何在Rails环境下构建基本的数据操作功能。让...

    react-rails-crud

    使用Rails和React创建一个简单的CRUD应用 这是代码存储库,其中包含有关如何创建Rails API的教程,然后使用Webpacker gem来构建React前端以使用它。 教程网址: : 要求 本教程开始时有安装Ruby和Node的说明。 ...

    Rails101_by_rails4.0

    作者特别提到了“CRUD懶人大法Scaffold”,它是一种通过Rails自动生成代码的方式来快速搭建基本的CRUD操作,这大大简化了开发流程,使得开发者可以将更多的精力放在业务逻辑的实现上。 此外,书中还介绍了一些Rails...

    基于Rails2.2.2的自建的CRUD项目视频

    【标题】"基于Rails2.2.2的自建的CRUD项目视频" 在这个项目中,我们将探讨如何使用Ruby on Rails 2.2.2版本构建一个基础的CRUD(创建、读取、更新和删除)应用。Ruby on Rails 是一个流行的开源Web应用程序框架,它...

    Rails 101 入门电子书

    ### Rails 101 入门电子书知识点详解 #### 一、简介 《Rails 101 入门电子书》是一本非常适合初学者直接入门的书籍,它由xdite编写并出版于2014年6月10日。本书主要针对的是希望学习Ruby on Rails框架的读者,特别...

    Rails 101S

    - 使用Rails内建的Scaffold命令创建模型、控制器和视图,实现基本的CRUD操作。 - 示例:通过`rails generate scaffold Topic title:string description:text`创建一个Topic模型及其关联的CRUD操作。 - **整合...

    will_paginate_endless_scroll_example:如何使用 will_paginate gem 创建无限滚动的演示

    使用gem 'will_paginate', '~&gt; 3.0.7'实现无限/无限滚动的工作 Rails CRUD 应用程序示例。 gem 'faker'被用来为项目gem 'faker'虚假数据。 演示 现场演示: : 在本地开发中安装 克隆回购: git clone git@github...

    rails指南 中文版

    6. **Scaffolding**:Rails提供了快速生成基本CRUD(Create, Read, Update, Delete)操作的命令行工具,可以自动生成控制器、视图、样式表和测试文件,方便快速搭建原型。 7. **Testing**:Rails强调测试驱动开发,...

    rails2.3.2

    此外,还有 Scaffolding 机制,可以自动生成基本的 CRUD(创建、读取、更新、删除)操作的控制器和视图。 在这个版本中,Rails 进一步提升了开发效率和代码质量,为开发者提供了强大而优雅的工具。虽然现在已经有...

    Ruby on Rails入门例子

    4. 实现CRUD操作:展示所有文章(index),新建文章(new),编辑文章(edit),保存或更新文章(create/update),删除文章(destroy)。 5. 测试:使用RSpec或MiniTest进行功能测试和集成测试,确保应用正常工作。...

    Rails3常用命令行命令

    Rails的scaffold命令是一个强大的工具,可以快速生成一套完整的CRUD(Create, Read, Update, Delete)界面,包括Model、View和Controller。例如,创建一个名为Person的资源: ```bash rails g scaffold person name...

    rails敏捷开发的购物车系统

    例如,`resources :carts` 会自动生成CRUD(创建、读取、更新、删除)操作的路由,使得用户能够操作购物车。 购物车的核心功能包括添加商品、删除商品和计算总价。在Rails中,可以使用ActiveRecord来操作数据库。...

Global site tag (gtag.js) - Google Analytics