`
fireDragonpzy
  • 浏览: 462547 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

rails base 之数据库---查询

阅读更多
a = Category.new(:name => 'Ruby', :position => 1)
a.save
# save 还有相同方法”save!”
# 有无惊叹号的差别在于validate资料验证不正确的动作,
# 无惊叹号版本会回传布林值(true或false),有惊叹号版本则是验证错误会丢出例外。

b = Category.create(:name => 'Perl', :position => 2)
# create也有“create!”方法,作用同save
# create在执行的时候已经将资料插入数据库,无须再调用save方法

b.save(:validate => false)
# 透过:valiate => false 可以略过验证
# create虽然无需再调用save方法,但仍然可以调用save方法。

Category.first
# 取出第一条记录

Category.last
# 取出最后一条记录

Category.all
# 取出所有

Category.find(1)
# 取出id=1的记录

Category.find(1, 3)
Category.find([1, 3])
# 取出id为1和3的记录

# find方法会在没有取到符合条件的记录时抛出错误
# 如果你不想这样,请用:find_by_id

Category.find_by_name('Ruby')
# 取出name字段等于“Ruby”的记录

# 可以用and进行多字段查询

Category.find_by_name_and_postion('Ruby', 1)
# 取出name='ruby' and postion=1的记录

# find_by_* 和 find_all_by_*它们的不同之处是前者会进行“limit 1”限制

Category.find_by_sql("SELECT * FROM categories WHERE name LIKE '%p%'")
# 如果你想自己手写sql就可以使用这个方法
# find_by_sql没有“find_all_by_sql”方法

Category.where(:name => 'Ruby', :position => 1)
# `name` = 'Ruby' AND `position` = 1

Category.where(["name = ? or position = ?", 'Ruby', 3])
# `name` = 'Ruby' OR `position` = 3

# 另外,where 是lazy loading,也就是直到真的需要取值的时候,才会跟资料库拿资料。
# 如果需要立即触发,可以接着使用.all, .first, .last,例如:
# Category.where(["name = ? or position = ?", 'Ruby', 3]).all

Category.limit(5).all
# 限制查询记录数,它只接受这一个参数
# 如果要使用形如:“limit x, y"请组合使用“offset”方法

Category.order("position")
Category.order("position DESC")
Category.order("position DESC, name ASC")
# 对内容排序

Category.order("position").reorder("name")
# 改用name 排序

Category.order("position").reorder(nil)
# 取消所有排序

Category.limit(3).offset(2)
# 从第二条开始显示3条记录

Category.select('id, name')
# 只查询出id,name栏位的数据

Category.readonly.first
# 使用readonly可以使查询出来的结果不能再次改变其值

# 以上查询方法可以进行无顺序的自由的串接:
# Category.select(..).order(..).limit(.)....

Category.where("position > 1").find_each do |category|
  category.do_some_thing
end
# 如果资料量很大,但是又需要全部拿出来处理,可以使用find_each 批次处理

Category.find_each(:batch_size => 2) do |category|
  puts category.id
end
# 预设会批次查出1000条,如果需要设定可以加上:batch_size 参数。

c = Category.all
c.reload
# reload 重新查询出结果给c

c = Category.first
c.destory
# 删除id = c.id的资料

Category.delete(2)
# 删除id = 2的资料

Category.count
# 获取记录总数

Category.average(:position)
Category.maximum(:position)
Category.sum(:position)
# 略过...

Category.where(["position>?", 2]).count
# 用where缩小范围

c = Category.first
c.update_attributes(:position => 6)
# or
# 注意下边这个,我照书上抄的,老是报错,好像不行,试着传hast,array,symbol都不行
# 版本 3.1.0
c.update_attributes('position', 6)
# 更新id = c.id的记录使栏柆position=6
# 同类方法:“update_attributes!”
a = Order.select("*,sum(price) as p,count(*) as c").where("a=? ",2).group("date_format(created_at,'%Y-%m')")
#select 指定要查询的字段
#group 分组
# date_format mysql中的时间格式化
分享到:
评论

相关推荐

    rails-api-base:Rails 5 RESTful API模板

    git clone git://github.com/jordifierro/rails-api-base.git --origin rails-api-base your-project-name cd your-project-name 重命名整个项目并重置README.md: ./bin/rename_project YourProjectName 删除所

    rails-base-4-2

    自述 此自述文件通常会记录启动和运行应用程序所需的...数据库创建 数据库初始化 如何运行测试套件 服务(作业队列、缓存服务器、搜索引擎等) 部署说明 … 如果您不打算运行rake doc:app请随意使用不同的标记语言。

    rails-activerecord-model-rails-lab-v-000

    ActiveRecord模型Rails实验室 目标 手动创建迁移 手动创建模型 建立模型实例方法 建立模型 您可以在spec/models目录中找到此应用程序的测试套件,并使用以下命令运行它们: bundle exec rspec 。 该实验室进行测试以...

    Ruby on Rails

    在 Rails 中,数据库支持的模型类派生自 ActiveRecord::Base。Active Record允许您将数据库行中的数据显示为对象,并使用业务逻辑方法修饰这些数据对象。虽然大多数 Rails 模型都由数据库支持,但模型也可以是普通的...

    ruby on rails入门基础

    - 定义模型类,继承自`ActiveRecord::Base`,可以自动连接到数据库表。 - 使用`has_many`、`belongs_to`等关联方法建立模型间的关联。 9. **数据库迁移(Migrations)**: - 通过创建迁移文件来改变数据库结构,...

    ruby 例子 模仿rails 的 mvc

    这些类继承自`ActiveRecord::Base`,这是Rails框架提供的一个基类,它提供了与数据库交互的能力,如查询、创建、更新和删除记录。例如: ```ruby class User < ActiveRecord::Base # 定义关联、验证和其他业务逻辑...

    web开发_ruby_on_rails

    - **Model (模型)**: 代表了应用程序的数据层,通常是一组继承自`ActiveRecord::Base`的类,每个类对应一个数据库表。 - **View (视图)**: 负责展示数据,通常由HTML、CSS和JavaScript组成,也可以使用嵌入式Ruby ...

    Pro Active Record. Databases with Ruby and Rails

    - **集成方式**:在Rails中,Active Record是核心ORM(Object-Relational Mapping)组件,几乎所有的模型类都会继承自`ActiveRecord::Base`。 - **关联关系**:Active Record支持多种类型的关联关系,如一对一、一...

    ruby on rails入门

    - **定义数据库表**:使用 `rails generate migration CreateTodos title:string description:text` 命令来生成迁移文件,然后运行 `rails db:migrate` 来更新数据库。 - **创建控制器**:使用 `rails generate ...

    rails 部署 nginx

    这包括安装Ruby环境(如RVM或rbenv),管理Gemfile中的依赖(通过Bundler),设置数据库配置,并确保所有必要的服务(如Nginx和Rails应用服务器Puma或Unicorn)都已安装和配置。 4. **Nginx配置**: 文件 "nginxx_...

    浅谈Ruby on Rails下的rake与数据库数据迁移操作

    在Ruby on Rails框架中,数据库迁移是开发过程中不可或缺的一部分,用于管理数据库模式的变化。本文将深入探讨Rails中的rake工具和数据库迁移的概念,以及如何正确地利用它们。 首先,Rails中的Migration是数据库...

    Ruby-ActsAsTennant通过一个共享数据库的策略来为一个Rails应用添加多租户支持

    接着,在ApplicationRecord(或者ActiveRecord::Base,如果你使用的是较早版本的Rails)中包含Acts As Tennant的模块,以使所有模型都具有多租户功能。 2. **设置当前租户**: 在处理每个请求时,必须设置当前租户...

    mid.zip_Rails

    开发者可以定义模型类,这些类将继承自ActiveRecord::Base,提供诸如验证、关联和其他数据库操作的方法。 2. **Views**:视图负责展示数据,通常由HTML、ERB(Embedded Ruby)或其他模板语言组成。它们与控制器交互...

    Rails GUI Development with Ext JS 10-Jan-08 RUG-B.pdf

    class Post < ActiveRecord::Base validates_presence_of :title, :message => "Title can't be blank" end ``` - **控制器代码**: ```ruby def index respond_to do |format| format....

    Laravel开发-base-fw

    它的设计灵感来源于 Ruby on Rails,并以其优雅的语法、强大的功能和丰富的社区支持,成为了 PHP 世界的首选框架之一。"base-fw-lrv-5.3-master" 这个文件名暗示我们讨论的是 Laravel 5.3 版本的基础框架。 **1. ...

    Ruby-RecordCache在Rails3中缓存ActiveModelRecords

    在Rails 3中,开发者经常面临数据库查询频繁,导致性能瓶颈的问题。为了解决这个问题,RecordCache是一个有效的解决方案,它专门设计用于缓存Active Model Records。 RecordCache是一个轻量级的库,它通过将Active ...

    rails 2.2.2 API

    5. **ActiveRecord 查询接口(ActiveRecord Query Interface)**:提供了一种声明式的查询方式,允许开发者以简洁的 Ruby 代码执行复杂的数据库查询。 6. **辅助方法(Helper Methods)**:为视图提供了一些实用的...

Global site tag (gtag.js) - Google Analytics