这两天的一点学习记录
@@开头的为类变量
@开头的为实例变量
attr_accessor :name
表示一个name属性,可能通过xx.name和读取和设置
attr_reader :name
说明name是一个只读属性,只能通过xx.name读取值而不是设置
attr_writer :name
说明name是一个只写属性,只能通过xx.name来设置值而不能读取
ror模型中的数据验证的辅助方法
vaildates_presence_of :name
表明这个name的值是必填的
在ror中还有一些其它的验证方法。
我们也能添加自定义的验证方法。
只要通过validate :xxx
:xxx是模型中自定义的一个方法,我们只要在方法里添加自已想要的验证条件,并通过errors.add(:xx,'出错信息')来添加验证未通过时的错误提示就实现了一个自定义的验证方法
ActiveRecord中orm的管理
通过belongs_to :order管理多对一关系
通过has_many :products管理一对多关系
ror中的session管理
ror默认的session是保存在文件系统中的,我们可能通过enviroments.rb中的config.action_controller.session_store = :active_record_store设置可以将session保存到数据库中
当有多个应用并存时我们需要在ApplicatonController中设置session :session_key => 'xxxx_session_id'和protect_from_forgery :secret => '8c3e099237e6366fd2f5366e9c430e79'这两个值以区分不同应用的session
session的存取则是通过session[:name]来进行
在ror中通过params[:id]来读取get和post的参数
控制器中过滤器
通过在ApplicationController中添加before_filter :xxx, :expect => :yyy可以在访问所有的action前先执行:xxx指定的方法 ,除了:expect中指定的:yyy方法外,而在指定控制器中增加before_filter则只对当前控制器的所有action有用
当我们通过controller创建控制器时,在rails中会在views/layout下创建一个同名的主view,我们可以通过ApplicationController中的layout "xxx"指定给所有的控制器一个相同的主view