loading ...
loading...

2006-09-20 | ROR学习琐记(4)

分享
标签: 函数  定义 

1.SHA1加密:

首先,要装载模块:require "digest/sha1"

一段示范加密函数:

def self.encrypted_password(password)
   Digest::SHA1.hexdigest(password)
end

2.我们在用户注册时要求用户重复输入两次密码来确认正确性,验证函数可以用:

在model:

attr_accessor :password_confirmation
validates_confirmation_of :password

在页面:

<p>
<label for="user_password_confirmation" >重复密码:</label>
<%= form.password_field :password_confirmation, :size => 40 %>
</p>

3.过去我们一直让rails帮我们自动产生scaffold,如果我们要自己定义该如何?

ruby script/generate controller Login add_user login logout delete_user list_users

此命令将产生login controller以及add_user.rhtml等页面和action函数

4.model对象可以通过调用count函数来统计数目,比如Order.count将返回orders表的记录数

5.比较有趣的,和java中servlet的filter相似的概念,通过过滤器来控制访问权限

比如,我们想判断某个用户是否具有访问某个URL的权限,我们可以写一个函数:

def authorize
  unless User.find_by_id(session[:user_id])
    flash[:notice] = "Please log in"
    redirect_to(:controller => "login" , :action => "login" )
  end
end

此段代码的意义很明显,判断用户是否登陆,没登陆就跳转到登陆页面,然后在需要控制访问的controller加入:

before_filter:authorize
如此一来,当访问此controller所拥有的页面之前将进行过滤判断

6.rails中的ORM,比起hibernate,简单多了,真正的描述性语言,比如:

class Order < ActiveRecord::Base
   has_many :line_items
end

class LineItem < ActiveRecord::Base
  belongs_to :order
end

两个关键字,belong_to和has_many定义了Order与LineItem之间的双向一对多关系,需要配置吗?需要注释吗?都不需要,rails已经帮你搞定一切...不过,你必须在建表的时候定义关联外键,而hibernate则不要求如此.

ActiveRecord的功能相比于hibernate来说还显得弱小,但符合rails的设计原则

分享 分享 |  评论 (0) |  阅读 (?)  |  固定链接 |  类别 (动态语言(ruby groovy)) |  发表于 14:30
搜狐博客温馨提示:搜狐博客官方不会要求参加活动的各位博友缴纳任何的手续费用。请勿轻信留言、评论中的中奖信息,更不要拨打陌生电话及向陌生帐户汇款,谨防受骗!识别更多网络骗术,请 点击查看详情
您还未登录,只能匿名发表评论。或者您可以 登录 后发表。
 
  *中国人爱国心,搜狗输入法爱国主题皮肤下载>>
表  情:
加载中...
回复通知: 同时用小纸条通知对方该回复