1、 一个实变量由@开头,它的范围限制在 self 对象内.两个不同的对象,即使属于同一个类,也可以拥有不同值的实变量.从对象外部来看,实变量不能改变甚至观察(比如, Ruby的实变量从来不是公用的),除非方法由程序员明确声明.像全局变量一样,实变量在初始前的值是nil.
Ruby的实变量用不着声明.这暗含着对象的弹性结构.实际上,每个实变量都是在第一次出现时动态加入对象的.
(实变量可以被前台页面访问)
2、scaffold的用法
2.0以后下是用 script/generate scaffold ModelName [field:type, field:type]
在1.2.6之前我们可以通过./script/generate scaffold product admin 来建立一个Post的模型和对应的admin控制器
但是在2.0以后使用./script/generate scaffold product [title:string]命令后,会建立一个product的模型和一个product的控制器。就是根据rails命名约定自己加的。
3、link_to(链接)
link_to"编辑",:action=>"edit"
此句创建一个指向edit这个action的html链接,链接显示字符为“编辑”
link_to除了action,还可以定义controller,以及action的参数
link_to "About", :controller=>"showpage", :action=>"about", :id=>11
此句生成的url为http://.../showpage/about/11
如果把上一个link_to语句的id部份改写为:name=>"gichengan",则生成的url为
http://.../showpage/about?name="glchengang"和前一个url比较得知,id是默认参数,不显示在浏览器的url中
4、class User < ActiveRecord::Base
set_table_name "table1" 指定非默认的表名
set_primary_key "name" 指定非默认主键 以后name字段就成id,
如o.id="chengang"
end
5、2.8.2更设置
Rails命名约优于配我们不得已违反Rails也提供参下即方面
1.belongs_to属性
belongs_to : student,
:class_name => " Student ", #指父类
:foreign_key => "student_id",#外键
:conditions => "id is not null",#约束条件
2.has_one属性
has_one除拥有belongs_to的属性,自己还有两个属性
:dependent => true父表删除记录,子表删除相应的记录,
:order =>"id DESC"返回记录排序
3.has_many的属性
has_many除了拥有has_one的属性,还有三个属性
:exclusively_dependent => true 说明作用和dependent一同但速度快,两属性不能同时使用,
:finder_sql => "select i.* from categories c, items i where i.category_id = c.id "指定返回的数据集
:counter_sql => "select count(*) from items"
重写记录数
2.10
2.10 模型的验证
在类用一些validates_*属性,可以定义字段特征。不需要写代码Rails框架自动进行验证validates_presence_of :title, :desc, :image_url 必须不为空
validates_numericality_of :price必须是数字
validates_uniqueness_of :title 唯一
validates_format_of :image_url, 文件名必须是图片扩展名
:with => %r{^http:.+\.(gif|jpg|png)$}i, :message => "must be a URL for a GIF, JPG, or PNG image"
保存到据库之前会调validate方法例:
def validate
errors.add(:price, "should be positive")unless price.nil?||price> 0.0 end
Ruby的实变量用不着声明.这暗含着对象的弹性结构.实际上,每个实变量都是在第一次出现时动态加入对象的.
(实变量可以被前台页面访问)
2、scaffold的用法
2.0以后下是用 script/generate scaffold ModelName [field:type, field:type]
在1.2.6之前我们可以通过./script/generate scaffold product admin 来建立一个Post的模型和对应的admin控制器
但是在2.0以后使用./script/generate scaffold product [title:string]命令后,会建立一个product的模型和一个product的控制器。就是根据rails命名约定自己加的。
3、link_to(链接)
link_to"编辑",:action=>"edit"
此句创建一个指向edit这个action的html链接,链接显示字符为“编辑”
link_to除了action,还可以定义controller,以及action的参数
link_to "About", :controller=>"showpage", :action=>"about", :id=>11
此句生成的url为http://.../showpage/about/11
如果把上一个link_to语句的id部份改写为:name=>"gichengan",则生成的url为
http://.../showpage/about?name="glchengang"和前一个url比较得知,id是默认参数,不显示在浏览器的url中
4、class User < ActiveRecord::Base
set_table_name "table1" 指定非默认的表名
set_primary_key "name" 指定非默认主键 以后name字段就成id,
如o.id="chengang"
end
5、2.8.2更设置
Rails命名约优于配我们不得已违反Rails也提供参下即方面
1.belongs_to属性
belongs_to : student,
:class_name => " Student ", #指父类
:foreign_key => "student_id",#外键
:conditions => "id is not null",#约束条件
2.has_one属性
has_one除拥有belongs_to的属性,自己还有两个属性
:dependent => true父表删除记录,子表删除相应的记录,
:order =>"id DESC"返回记录排序
3.has_many的属性
has_many除了拥有has_one的属性,还有三个属性
:exclusively_dependent => true 说明作用和dependent一同但速度快,两属性不能同时使用,
:finder_sql => "select i.* from categories c, items i where i.category_id = c.id "指定返回的数据集
:counter_sql => "select count(*) from items"
重写记录数
2.10
2.10 模型的验证
在类用一些validates_*属性,可以定义字段特征。不需要写代码Rails框架自动进行验证validates_presence_of :title, :desc, :image_url 必须不为空
validates_numericality_of :price必须是数字
validates_uniqueness_of :title 唯一
validates_format_of :image_url, 文件名必须是图片扩展名
:with => %r{^http:.+\.(gif|jpg|png)$}i, :message => "must be a URL for a GIF, JPG, or PNG image"
保存到据库之前会调validate方法例:
def validate
errors.add(:price, "should be positive")unless price.nil?||price> 0.0 end