第36个标记 » 2007 » July

喜马拉雅的天空

存档: July, 2007

BB的Microsoft Visual Studio插件到货了

在一个月前的一文章2个BlackBerry新开发用品 中介绍了即将发布的Microsoft Visual Studio的plugin,目的就是为了更好的整合企业服务.
当时该插件还没有提供下载,可能是正在开发中.不过令人高兴的是该插件已经提供下载.你可以到去http://na.blackberry.com/eng/developers/downloads/mvsplugin.jsp下载.
该插件够大的,居然有200多M,这帮人也是够狠的,看来我的硬盘又要整理了.
先试用一把,如果可能的话,贴出使用心得.非常期待它会给我们带来惊喜.
注意,目前对于中国大陆用户不支持下载. 当你提交你的信息之后,它会提示IP的国家不支持.这是BlackBerry下载的惯例,早已习以为常了.据说连欧洲的同仁们也不可以下载,同病相怜.
至于如何下载,自己想办法吧.哈哈!

Confach发表于 July 31, 2007 5:57 pm | 留言(2) |我爱黑妹 

笔记零碎

公司的专业化

人才来源于贫困地区学校,忠诚度,崇尚名校的做法有待商榷

忍耐力特别强的人

四季花园,看起来是万科独爱的名字

1234

招商银行,平安保险,中集集团,华侨城,远大空调,蒙牛,联想,万象

当王石登上珠峰时,居然有个71岁的日本人,足以证明日本这个民族的上升力

当在图书馆的取水处看见一位七十多岁的老爷爷在换桶装水时,周围的年轻小伙子和MM们居然等着这位先生换,这是一种极其不道德的行为.最后还是我帮着换了.(这是真实发生的)

还是竞争力,技术,能力等

惺惺相惜,

登山是希望挑战自己,希望给自己一个很好的身体,给自己的生活一个平衡

一笑泯恩仇,哈哈

消费时代的产物,互联网,短信,多媒体和互动,造成了一个客观上的互动平台,社会现象

品牌的一大作用就是使你的事业具备一种防御能力,从而让你在市场沉浮,技术盛衰以及竞争对手的残酷的商场中始终立于不败之地.

Confach发表于 July 28, 2007 2:53 pm | 留言 |闲情逸致 

Rails关联Model的验证

这也恐怕是第一篇关于Rails的纯粹的技术文章.
这篇文章很简单,就是Rails的验证问题.

问题
 假如有一个User model,而这个User又带有一个Profile model. User和Profile的代码分别为:

User 代码
  1. class User < ActiveRecord::Base  
  2.   has_one :profile  
  3.   validates_presence_of :password,:on => :create,:message =>"Password can’t be empty!"  
  4.   validates_presence_of :password_confirmation,:on => :create,:message =>"Please re-type password!"  
  5.   validates_format_of :email,:on => :create,:message => "Email is invalid!",:with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i  
  6.   validates_uniqueness_of :email:on => :create  
  7.   validates_length_of :password,:password_confirmation:minimum => 4,:message=>"Password must be 4-40 characters or digits! "  
  8. end  



User包含email,以及密码

Profile代码
  1. class Profile < ActiveRecord::Base  
  2.   belongs_to :user  
  3.   validates_presence_of :firstname,:message=>"First name is required"  
  4.   validates_presence_of :lastname,:message=>"Last name is required"  
  5. end  

Profile仅有first name和last name.

User对应的Controller是UserController,而Profile没有对应的Controller,所有操作都在UserController里完成,当然包括editprofile,以及updateprofile.

ruby 代码
 

  1. class UsersController < ApplicationController  
  2.    
  3.   def editprofile  
  4.     current_user.profile  
  5.  end  
  6.   
  7. def updateprofile  
  8.     if current_user.profile.nil?  
  9.       @profile = Profile.new(params[:profile])  
  10.       @profile.user = current_user  
  11.       begin  
  12.        @profile.save!  
  13.       rescue  
  14.         redirect_to :back  
  15.         return  
  16.       end  
  17.     else  
  18.       @profile = current_user.profile  
  19.       unless @profile.update_attributes(params[:profile])  
  20.         redirect_to :back  
  21.         return  
  22.       end  
  23.     end  
  24.   end  
  25.   
  26. end  

在updateprofile里,如果firstname或last name为空的,是可以验证的,但是无法在view上显示.也就是说error_messages_for ‘profile’不工作.

分析
   按照常理,profile应该对应有controller的,但是有的时候为了统一,也许不会那么做.所以在处理的时候一定要注意.那么在profile保存的时候,进行验证,这个操作是可以进行的,但是为什么在editprofile时error_messages_for ‘profile’没有反应呢?那只能说明@profile里的errors是空的,那么@profile的erros是空的?前面明明已经得到验证了,所以应该不为空.究竟是什么原因呢?看看editprofile,发现问题了吧,原来此profile和updateprofile提交的是不一样的.前者是没有errors的.

解决

既然知道了原因所在,那就非常简单了,直接把提交的profile赋值给editprofile的profile.可以采用session,缓存将提交的profile对象存储起来就OK了.

总结
 Rails其实原理比较简单的,关键是有的时候要符合框架的基本意图,也正因为是个框架,其带来的条条框框有时候会令人抓狂.如果实在搞不懂,那就看看Rails里的源代码,了解其来龙去脉吧.

Confach发表于 July 27, 2007 12:52 pm | 留言 |一技之长 

上一页