ror学习小结4
1 rails new 应用名称
2 启动服务器 rails server
启动项:-p port:端口
-b=ip
-c:使用自定义rackup配置文件
-d:使用服务器作为系统守护进程
3 建立项目时指定数据库 rails new blog -d=mysql
4 数据库config/database.yml中,记得象
password: "xxxxx" password和密码之间要有空格
5 新增控制器,指定一个动作
rails generate controller home index
会在app\view\home中增加一个index.htm.rb的文件
还要在config\routes.rb文件中,增加一行代码
root :to => "home#index"
6 代码生成器
数据库中POJO的表名要为复数形式,
rails generate scaffold Article id:int name varchar(45) ........
7 进入脚手架默认生成的管理页,比如
<%=link_to "文章管理",articles_path%>
8 执行流程:1)获得系统配置文件从enviroment,database.yml和initializers中,
2) 用户的访问输入时,先访问boot.rb文件,再访问enviroment.rb文件,再访问routes.rb文件,再到
MVC执行流程
9 activerecord
1)find(1,3),找主键为1,3的记录
2)获得第一行和最后一行 Person.find(:last),Person.find(:first)
3)findall:
Person.find(:all,:order =>"age")
4)动态查询
find_by_*,返回符合的第一个对象
@people<<Person.find_by_sex("men")
find_all_by_*:返回符合条件的所有对象
find_by_*_and_*方法:
Person.find_by_sex_and_age_and_id_and_name("男",26,2,"xxxxx) //返回一个
Person.find_all_by_sex_and_age_and_id_and_name("男",26,2,"xxxxx) //返回所有
10 SQL语句支持
Book.find_by_sql("xxxx");
Book.find_by_sql(["select * from books where bookname=?",'xxxx']);
11 统计行数
@number=House.count(:conditions=>"location='xxx'")
count_by_sql:
@number=House.count_by_sql("select count(*) from ....");
12 new和save
@house=House.new
@house.xxx=....
@house.save
hash:
house=Hash.new
house[:price]=xxx
house[:dddd]=xxxxx
@house=House.new(house)
@house.save
13 create方法
House.create do |house|
house.price=xxx
.......
end
HASH的方法:
House.create(
:price =.xxx,
:house =xxxx
)
14 UPDATE方法
用来修改某个字段的值,一次只能修改某一个属性的值,比如
log.update_attribute(:log,"xxxxxx)
update_attributes方法,可以接收进行HASH修改
log.update_attributes([:log=>"xxxxx",:time=>time.now])
//时间要匹配,要在config/enviroments/development.rb中进行设置
config.tome_zone="BeiJing"
Log.update(1,(:record=>Time.now, :log=> "xxxxxx"})
其中第1个参数指定对象的id
也可以修改多条
Log.update([2,1],[{:record_time=>......},{ }]
update_all:
Log.update_all("log='xxxxx'","id<10") //更新id<10的所有记录的log
15删除数据
1) Log.delete(1);
Log.delete([1,3,4,5])//删除的id在一个集合中
2)delete_all
Log.delete_all("id>10")
3)destory
这个方法会逐一找出要删除的记录,然后再删除它们,以事务的方式执行
4)destory_all
Log.destroy_all("id>10")