ROR 之 用户注册实例(二)

ROR 之 用户注册实例(一) ...


 

Rails复数规则

 

Rails约定ControllerName(URL)为复数,TableName为复数。

 

从感性认识来看,Table复数规则即前节ruby script/generate scaffold user创建users表的现象。

那么ROR是怎么实现Table复数规则的?

 

script/generate指向%RegisterDemo%\script\generate,

在generate中require 'commands/generate'指向%rails-2.2.2%\lib\commands\generate.rb。

require "#{RAILS_ROOT}/config/environment"
require 'rails_generator'
require 'rails_generator/scripts/generate'

ARGV.shift if ['--help', '-h'].include?(ARGV[0])
Rails::Generator::Scripts::Generate.new.run(ARGV)

第1行 require  %RegisterDemo% \config\environment.rb。

第5行帮助命令格式是ruby script/generate --help/-h。在命令行中执行看回显。

第2,3行 require 指向 %rails-2.2.2%\lib\rails_generator\generators\applications和components。

这两子目录下边的每一个Folder都是Installed Generator以及Generator Template。

 

接下来 Installed Generator中可以看到pluralize,singularize字样的方法,测试一下:

require 'active_support'

puts 'post'.pluralize               →posts
puts 'blog'.pluralize               →blogs
puts 'shoes'.singularize            →shoe

这几个方法决定单复数形式,那么具体实现在哪里?

%activesupport-2.2.2%\lib\active_support\inflections.rb和inflector.rb。

 

%rails-2.2.2%\lib\rails_generator\base.rb

第232,233行,Check ActiveRecord::Base.pluralize_table_names ,定义了TableName。

 

%rails-2.2.2%\lib\rails_generator\generators\components\scaffold\scaffold_generator.rb

第24行,定义了ControllerName(URL)。

 

Ruby script/generate scaffold user都做了些什么?

 

%RegisterDemo% \db\migrate\yyyymmddhhMMss_create_users.rb建表文件(utc)。

%RegisterDemo% \app\controllers\users_controller.rb,
%RegisterDemo% \app\helpers\users_helper.rb,
%RegisterDemo% \app\models\user.rb。


%RegisterDemo% \app\views\users\index.html.erb,new.html.erb,edit.html.erb,show.html.erb对应L(D)CUR,
%RegisterDemo% \app\views\layouts\users.html.erb。

%RegisterDemo% \config\routes.rb追加map.resources :users。

 

暂且先列出以上这些。

 

再次rake db:migrate

 

此时将读取migrate\yyyymmddhhMMss_create_users.rb,实例CreateUsers类,

更新schema.rb,并将yyyymmddhhMMss写入schema_migrations表。

 

参考:%active_record%\connection_adapters\abstract\schema_statements.rb
initialize_schema_migrations_table和assume_migrated_upto_version。

  

Rake Task 一览:  Rake -T > C:\rake.txt

 

接下来一步步完善RegisterDemo(CSS,Ajax,注册验证码,Mail激活等)...

 

 

※原创版权所有,转载请Mail:Nanigac.Yin#Gmail.COM。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值