RoR - Advanced Querying

Posted vixennn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RoR - Advanced Querying相关的知识,希望对你有一定的参考价值。

Seeding the Database:

db/seed.rb 可以提供预设data  

rake db:seed  

#seeds.rb 

Person.create! [
 {first_name : "kalman", last_name: "Smith", age:33 },
 {first_name : "John", last_name: "Whatever", age: 27},
 {first_name: "Michael", last_name: "Smitch" ,age: 15}
]

rake db:seed #=> 将上面数据写入数据库

rails db   

.headers on 

.mode columns 

显示数据库内容

 

Including SQL fragments:

Person.where("age BETWEEN 30 and 33").to_a 
#=> 选出年龄在30与33之间的人转化成array输出

Person.find_by("first_name LIKE ‘%man‘")
#=> 选出名中带有man的人

 

SQL injection:

*操作原始SQL以侵入数据库
*这包括恶意删除表或获取机密信息

 

Array and Hash Condition Synatx:

Array Syntax:

允许使用 ? 后跟值(参数)指定SQL片段
自动对输入值执行转换并转义SQL中的字符串
不受SQL影响
类似于Java中的PraveReDebug语句

Person.where("age BETWEEN ? AND ?". 28 ,34 ).to_a

Person.where("first_name LIKE ? OR last_name LIKE ?", %J%,%J%).to_a

Array Syntax 有两个小问题:

1. 必须追踪? 在其后面给予数值

2.多有少个? 就必须赋多少值

 

Hash Condition Syntax:

Person.where("age BETWEEN :min_age AND :max_age", min_age:28, max_age:32).to_a 

Person.where("first_name LIKE :pattern OR last_name LIKE :pattern", pattern: %J%).to_a

 

以上是关于RoR - Advanced Querying的主要内容,如果未能解决你的问题,请参考以下文章

mybatis查询异常-Error querying database. Cause: java.lang.ClassCastException: org.apache.ibatis.executo

Atcoder 212D Querying Multiset

AtCoderD - Querying Multiset 优先队列

Redshift Querying: error xx000 disk full redshift

搭建Mybatis 出现 Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statement

Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection doe