查看完整版本: [-- 2008-03-14 测试题(00001) 点评 --]

Ruby中文社区论坛 -> 答案点评 -> 2008-03-14 测试题(00001) 点评 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

martin 2008-03-17 11:07

2008-03-14 测试题(00001) 点评

请有能力的同学对第一期中各位会员的答案点评。独乐乐,不如众乐乐。

跟帖即可。

martin 2008-03-17 11:09
第一题:大家很积极,也非常不错。

第二题:好像除了 lgn21st 、cclong 和 blackanger ,人并没有太多人参与。

lgn21st提供一个很不错的想法,这里也可以将 blackanger的想法继续改进下。


module ActiveRecord
class Base

alias old_method_missing method_missing

#譬如我们这里截取到 comment.user_login
def method_missing(name, *args)
#简单的忽略一些条件,我们不处理没有“_”的,也不处理find开头的
if name.to_s=~/_/ && name.to_s !~ /^find/
#分割user和login
c, m = name.to_s.split('_')

#m不为空,且当前有c这个属性,在这里即具有user这个属性
if !m.nil? && respond_to?(c.to_sym)
#获取user的值
obj = self.send(c.to_sym)
#如果user不为空, 且有login这个属性,,返回之
obj.send(m.to_sym) if !obj.nil?&&obj.respond_to?(m.to_sym)
end
else
#调用原有的method_missing
old_method_missing name, args
end

rescue
#调用原有的method_missing
old_method_missing name, args
end #end method_missing

end #end Base
end #end AR


这个可以直接放到 config\initializers 即可。

大家的答案非常精彩,内容有点多,我需要整理,我需要点时间,请稍等。我更期待大家一起来参与[s:2]

drive2me 2008-03-17 11:36
可能他们没有理解你的题意吧。
这题和实际编程挂钩的,没有经验的,可能不敢冒昧做。
其实没什么,做了、实践了就好。有大家帮着点评,提高更快,而且可以知道错在哪里,好在哪里。对吧!

martin 2008-03-17 11:44
引用
原帖由 drive2me 于 2008-3-17 11:36 发表
可能他们没有理解你的题意吧。
这题和实际编程挂钩的,没有经验的,可能不敢冒昧做。
其实没什么,做了、实践了就好。有大家帮着点评,提高更快,而且可以知道错在哪里,好在哪里。对吧!


其实我也没很明确的答案,我只是希望大家能积极的去参与,和大家分享,鼓励大家去动手。参与就是好的:)

drive2me 2008-03-18 10:17
你可以在这里把你出题的原意和要大家了解的目标告诉大伙,大伙就可以自己检查,看看是否达到了目标。
这样的话,意义更大,对吧?!呵呵。[s:2]


查看完整版本: [-- 2008-03-14 测试题(00001) 点评 --] [-- top --]


Powered by phpwind v8.0 Code ©2003-2010 phpwind
Time 0.048364 second(s),query:2 Gzip enabled