论坛首页 编程语言技术论坛

美就是生产力(Rails美学宣言阐释)

浏览 39493 次
该帖已经被评为精华帖
作者 正文
   发表时间:2006-04-25  
呵呵,名字取得恐怖一点,实际上是对Rails作者一份PDF的解释,让大家找一下Rails的感觉而已
   发表时间:2006-04-25  
你好像忘贴付件了.
pdf: http://media.rubyonrails.org/presentations/pursuitofbeauty.pdf
0 请登录后投票
   发表时间:2006-04-25  
Account.transaction(david, mary) do
  david.withdrawal(100)
  mary.deposit(100)
end


代码本身的含义应该不需要做任何解释,Davie和Mary的帐户在这个事务中进行处理,做什么呢,你出一百,我进100

首先,这是一个事务,但是为什么不写成

Account.transaction do
  david.withdrawal(100)
  mary.deposit(100)
end


不是更清楚吗

但是,如果这个事务没办法完成,譬如david帐户的钱不够了,那么这个事务需要在数据库中整个回滚,数据库OK了,但是david在内存中的模型已经被修改,我们如何保护david和mary的内存模型和数据库保持一致呢,那就是最初的代码了。
0 请登录后投票
   发表时间:2006-04-25  
class Account < ActiveRecord::Base
   validates_presence_of :subdomain,:name, :email_address, :password
   validates_uniqueness_of :subdomain
   validates_acceptance_of :term_of_service, : on=>:create
   validates_confirmation_of :password, :email_address, : on=>:create
end


我不知道没用过rails的人会怎么理解,OK 我来读一遍,Account是一个ActiveRecord,但是你要小心了:
1。 subdomain,name,email_address,password必须存在(有值)
2。subdomain要唯一的哦
3。你必须接受term of service,当然不是每次你都要这么麻烦,只是在建账户的时候
4。两次密码必须一样,为了防止你的email地址不对,也确认一下吧

我相信读了这一遍以后,你马上就明白了(可能我没读你就明白了)

一个经常在程序里面碰到的问题是验证,而模型层的验证是必须有的,你碰到过比这更简洁、完美的验证机制吗,我只知道是麻球一样的XML,看起来无比强大的表达式和验证框架。。。
0 请登录后投票
   发表时间:2006-04-25  
potian 写道
class Account < ActiveRecord::Base
   validates_presence_of :subdomain,:name, :email_address, :password
   validates_uniqueness_of :subdomain
   validates_acceptance_of :term_of_service, :on=>:create
   validates_confirmation_of :password, :email_address, :on=>:create
end


我不知道没用过rails的人会怎么理解,OK 我来读一遍,Account是一个ActiveRecord,但是你要小心了:
1。 subdomain,name,email_address,password必须存在(有值)
2。subdomain要唯一的哦
3。你必须接受term of service,当然不是每次你都要这么麻烦,只是在建账户的时候
4。两次密码必须一样,为了防止你的email地址不对,也确认一下吧

我相信读了这一遍以后,你马上就明白了(可能我没读你就明白了)

一个经常在程序里面碰到的问题是验证,而模型层的验证是必须有的,你碰到过比这更简洁、完美的验证机制吗,我只知道是麻球一样的XML,看起来无比强大的表达式和验证框架。。。

这样的强验证/约束模型确实是渴望的。
一个问题: 这样的验证要跟数据库作频繁的SQL嘛?
比如保证唯一。
0 请登录后投票
   发表时间:2006-04-25  
class Project < ActiveRecord::Base
  belongs_to                   :portfolio
  has_one                      :project_manager
  has_many                     :milestones
  has_and_belongs_to_many      :categories
end


到这里,我觉得自己真是多此一举,还需要读吗,项目有一个项目经理,有很多里程碑,有并且属于很多分类,你还愿意用一个啥子XML文件,或者在代码里面稀里哗啦这边一个@,那边一个@吗。

不过且慢,portfolio 是单数,milestones ,categories 我们猜得到,就是Milestone,Category的复数了,但project_manager是什么东东,应该是个人,还有,如果project被删除,这个项目的里程碑还有意义吗,OK

class Project < ActiveRecord::Base
  belongs_to                   :portfolio
  has_one                      :project_manager, :class_name => "Person"
  has_many                     :milestones, :dependent => true
  has_and_belongs_to_many      :categories
end
0 请登录后投票
   发表时间:2006-04-25  
我的建议是你看RubyForRails
0 请登录后投票
   发表时间:2006-04-25  
firebody 写道
potian 写道
class Account < ActiveRecord::Base
   validates_presence_of :subdomain,:name, :email_address, :password
   validates_uniqueness_of :subdomain
   validates_acceptance_of :term_of_service, :on=>:create
   validates_confirmation_of :password, :email_address, :on=>:create
end


我不知道没用过rails的人会怎么理解,OK 我来读一遍,Account是一个ActiveRecord,但是你要小心了:
1。 subdomain,name,email_address,password必须存在(有值)
2。subdomain要唯一的哦
3。你必须接受term of service,当然不是每次你都要这么麻烦,只是在建账户的时候
4。两次密码必须一样,为了防止你的email地址不对,也确认一下吧

我相信读了这一遍以后,你马上就明白了(可能我没读你就明白了)

一个经常在程序里面碰到的问题是验证,而模型层的验证是必须有的,你碰到过比这更简洁、完美的验证机制吗,我只知道是麻球一样的XML,看起来无比强大的表达式和验证框架。。。

这样的强验证/约束模型确实是渴望的。
一个问题: 这样的验证要跟数据库作频繁的SQL嘛?
比如保证唯一。


该查数据库的时候还是得查呀,我们老早用的BTree数据库,啥DbaseII呀可没这么高级的唯一索引,这个约束,那个约束呀

讲笑话:)

很多时候,仅仅利用数据库本身的机制是不够的,譬如,很难提供好的用户反馈,我的习惯是一定查,在一个事务内部,多执行几句这种不返回大量数据集的语句无关紧要

说老实话,就算作为文档放在那里我也乐意,客户看到更乐意了,敏捷敏捷,交流交流,呵呵
0 请登录后投票
   发表时间:2006-04-25  
cookoo 写道

谢了
0 请登录后投票
   发表时间:2006-04-25  
...
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics