RUBY实践—数据库简单操作
开发环境:
Ruby:1.9.1
Rails:2.3.5
Rake:0.8.7
Rack:1.0.1
Mysql:5.0.9
Ruby-mysql:mysql-2.8.1-x86-mswin
IDE:RubyMine2.0.1
数据库准备:
database:dbdevelopment
user:crystal
password:crystal
一、创建Ruby项目RorTest
二、修改database.yml
这里只启用development环境数据库,修改配置文件如下:
development:
adapter: mysql
encoding: utf8
reconnect: false
database: dbdevelopment
pool: 5
username: crystal
password: crystal
host: localhost
三、运行Scaffold
RorTest->New->Scaffold 运行参数:Product title:string description:string price:integer
成功运行后,将在控制台中输出运行过程中创建的目录及文件(包括Model、Help、View等)
四、反向生成数据库表
在db/migrate下找到类似 create_products.rb文件,右键Run
成功运行后将在对应数据库中生成schema_migrations及products数据表
五、修改routes.rb
在routes.rb中添加映射规则
map.connect '/products',:controller=>"product",:action=>"index"
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
六、启动服务器,运行(http://localhost:3000/products)
注:Show、Edit、Destroy、New product功能可以自己测试一下,另外如果在model/product.rb中添加如下代码,可以对product中的字段进行必填验证,有兴趣的朋友可以测试一下
class Product < ActiveRecord::Base
#验证必填项
validates_presence_of:title,:price
end
class Product < ActiveRecord::Base
#验证必填项,message为显示的内容,也可不填 ,如下
#validates_presence_of:title,:price
validates_presence_of:title ,:message=>": Please input title"
validates_presence_of:price, :message=>": Please input price"
end
相关文档:
Ruby和Python的语法比较
其实Ruby和Python非常接近,比大多数别的语言要接近的多,所以喜欢用啥就用啥(大实话,虽然也是废话)。语法上的差别虽然有那么一点,大部分是syntax sugar,我斗胆稍微列几个(python我也忘得差不多了,不对的大家尽管来鞭尸吧),但是主要差异还是设计思想上的:灵活 ......
1.1.Rails
1.1 创建一个Rails应用程序
$ rails app_name
可选项:
-d, database=xxx 指定安装一个数据库(mysql oracle postgresql sqlite2 sqlite3 ), 默认情况下是数据库
-r, ruby-path= 指定Ruby的安装路径,如果没有指定,scripts使用env去找Ruby
-f, freeze (冻结)freezes Rails在vendor/rails目录
1.2 API Docume ......
分页中用到类变量,主要是用来标记“页码输入框”的id 如果一个页面有几个分页,“页码输入框”的id要是不同的才能分清是哪个要分页。使用类变量就是为了达到这个目的,让所有的对象实例共用一个变量,不必每次重新初始化变量。 类变量使用代码示例 1 require 'ruby-debug'
2 debugger
3 cla ......
class Point
@x = 1
@y = 2
def initialize(x,y)
@x,@y = x,y
end
end
代码中的@x,@y为实例变量,实例变量只对self的环境起作用,因此initialize外面的@x=1,@y=2只对类本身起作用,而方法内部,的@x,@y是对对象的实例起作用的。
class Point
include Enumerable
def initialize(x ......