将Rails中的一个Model按功能拆分 进行管理

在开发Rails应用中,随着业务的扩大,Model中的代码量越来越大,(本来在Rails中也是说瘦Controller,胖Model,不是吗?),上百上千行代码也是很常见的,所以很有必要将单个Model将照不同的作用分开,这样代码维护性也好。
我在 [url]http://github.com/courtenay/altered_beast/tree/master/config/initializers/concerns.rb[/url]看到一个很好的简单的方法:
建立[b]RAILS_ROOT/config/initializers/concerns.rb[/b]文件

class << ActiveRecord::Base
def concerned_with(*concerns)
concerns.each do |concern|
require_dependency "#{name.underscore}/#{concern}"
end
end
end

现在Model就有了一个[color=blue]concerned_with[/color]方法,例如在User这个Model中,我们可以将validation和一些业务方法分开来管理:
[b]RAILS_ROOT/app/models/user.rb[/b]
class User < ActiveRecord::Base
concerned_with :validations, :service
end


现在建立[b]RAILS_ROOT/app/models/user/validations.rb[/b]文件:
class User < ActiveRecord::Base
validates_presence_of :name
end


[b]RAILS_ROOT/app/models/user/service.rb[/b]
class User < ActiveRecord::Base
def self.authenticate(name, password)
find_by_name_and_password(name, password)
end
end

这以上只是一个很小的例子而已.

面对这样,是不是感觉很舒服呢?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值