浏览 1987 次
锁定老帖子 主题:Rails的CRUD
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (7)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-04
描述的思路是通过代码来讲解。 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方法 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |