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

猜你喜欢

转载自www.cnblogs.com/vixennn/p/10702240.html