`
fireDragonpzy
  • 浏览: 443263 次
  • 性别: 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 。 该实验室进行测试以...

    docker-rails-postgres:Docker用于Rails和Postgres的撰写模板

    必需的您需要安装并运行docker安装创建数据库: # Remove git remote origingit remote remove origin# Move .env-sample and rails/secrets.sample.yml filemv .env-sample .envmv rails/config/secrets.sample.yml...

    use_db:Rails 3 的多数据库 AR 连接

    UseDb Rails 3 的多数据库连接方案,支持测试和迁移特点 易于使用的 捆绑宝石在 database.yml 文件中定义第二组数据库。 使用前缀来区分核心数据库。 将“use_db :prefix => 'your_other_database_prefix_”添加到...

    rails4patterns-codeschool

    rails4patterns-codeschool级别 1:模型胖控制器不好很难明白业务逻辑未封装更多代码冲突新功能难以实现避免从回调中调用其他域对象回调是在对象生命周期的特定时刻被调用的方法。 在回调中引用其他模型: 引入紧...

    base-app:一个有助于快速启动新的Rails 4应用程序的应用程序。 具有Ruby 2.0,PostgreSQL,jQuery,RSpec,Cucumber,使用Devise构建的用户和管理系统,Facebook登录

    基本应用基本的Rails 4应用程序。 具有Facebook登录功能的用户和管理系统。 它对Heroku不可安装。 该视图是使用实现的。 这是。 请注意,未设置用于Facebook登录的环境变量,因此以这种方式登录将不起作用。宝石文件...

    rails:Ruby on Rails

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

    ansible-rails-base:提供 rails 项目模板 ansible playbook

    自述文件 转至 流浪汉 写入 .ssh/config ...数据库创建 数据库初始化 如何运行测试套件 服务(作业队列、缓存服务器、搜索引擎等) 部署说明 ... 如果您不打算运行rake doc:app ,请随意使用不同的标记语言。

    hashid-rails:在Rails应用程序ActiveRecord模型中使用Hashids(http:hashids.orgruby)

    您的模型将使用唯一的短哈希,例如“ yLA6m0oM”,“ 5bAyD0LO”和“ wz3MZ49l”,而不是使用诸如1、2、3之类的序号的模型。 数据库仍然会使用整数,因此可以随时添加或删除此gem。 重要信息:如果您需要从1.0之前...

    rails_api_base:rails_api_base

    自述文件 该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: ...数据库创建 数据库初始化 如何运行测试套件 服务(作业队列,缓存服务器,搜索引擎等) 部署说明 ...

    mautic-rails:MauticRuby客户端包装

    轨道 Roau辅助工具/ Mautic API和表格包装器 兼容Rails 4.2.8 +,5.1 + 安装 将此行添加到您的应用程序的Gemfile中: ... base_url = "https://my-rails-app.com" # OR it can be Proc # *optional* This

    dummy_data:使用虚拟为模型(包括关联)生成一致的伪数据,并提供瑞克任务以将其导入数据库

    虚拟数据 “虚拟数据”是Rails 3应用程序的... $ rails generate dummy:data --base-amount 5 --growth-ratio 1.5 另外,您可以手动定义为每个模型生成的记录数量(或仅接受默认值): $ rails generate dummy:data

    未读:使用Ruby on Rails处理未读记录并将其标记为已读

    未读 Ruby gem可管理ActiveRecord对象的已读/未读状态-而且速度很快。 产品特点 管理您希望读者(例如用户)阅读的任何内容(例如消息,文档,评论等)的未读记录 ... ActiveRecord :: Base acts_as_reader # Optio

    base_admin:Ruby On Rails中的管理站点

    语言:Ruby v2.4.0框架:Ruby on Rails 5.0.2数据库:PostgreSQL 9.5 气氛 安装 1-Ruby安装 我依靠本教程: : 以前的安装: sudo apt-get install -y libssl-dev zlib1g-dev libreadline-dev 我安装了rbenv git ...

    chinese_regions_rails:中国省市区县数据库,包含行政编码,类别,地区拼音和简拼

    安装宝石文件gem 'chinese_regions_rails'复制迁移rails g chinese_regions:install数据库迁移和种子rake db:migraterake db:seed:regions使用直接使用区域模型class User < ActiveRecord :: Base belongs_to :...

    arproxy:Arproxy是ActiveRecord和数据库适配器之间的代理

    Arproxy是ActiveRecord和数据库适配器之间的代理。 您可以使自定义代理在DB适配器执行SQL之前对SQL进行分析和/或修改。 入门 在Rails的config / initializers中编写您的代理及其配置: class QueryTracer < ...

    base_rails_project

    自述文件 该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本 ...数据库创建 数据库初始化 如何运行测试套件 服务(作业队列,缓存服务器,搜索引擎等) 部署说明 ...

    partitioned:Postgres数据库表分区对Rails的支持

    分区分区为ActiveRecord添加了帮助,以操纵(读取,创建,更新)ActiveRecord模型,该模型表示可能位于许多数据库表之一中的数据(由Models数据确定)。 它还具有支持创建和删除子表以及分区支持基础结构的功能。 ...

    hair_trigger:ActiveRecord的快乐数据库触发器

    HairTrigger允许您以简洁,与数据库无关,Rails-y的方式创建和管理数据库触发器。 您可以在Ruby中的模型中声明触发器,然后执行一个简单的rake任务即可为您完成所有肮脏的工作。 安装 HairTrigger从Rails 5.0开始...

Global site tag (gtag.js) - Google Analytics