`
Nanigac
  • 浏览: 13674 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

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。

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics