martin 2008-3-17 11:07
2008-03-14 测试题(00001) 点评
请有能力的同学对第一期中各位会员的答案点评。独乐乐,不如众乐乐。
跟帖即可。
martin 2008-3-17 11:09
第一题:大家很积极,也非常不错。
第二题:好像除了 lgn21st 、cclong 和 blackanger ,其他人并没有太多人参与。
lgn21st提供一个很不错的想法,这里也可以将 blackanger的想法继续改进下。
[code]
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
[/code]
这个可以直接放到 config\initializers 即可。
大家的答案非常精彩,内容有点多,我需要整理,我需要点时间,请稍等。我更期待大家一起来参与:)
drive2me 2008-3-17 11:36
可能他们没有理解你的题意吧。
这题和实际编程挂钩的,没有经验的,可能不敢冒昧做。
其实没什么,做了、实践了就好。有大家帮着点评,提高更快,而且可以知道错在哪里,好在哪里。对吧!
martin 2008-3-17 11:44
[quote]原帖由 [i]drive2me[/i] 于 2008-3-17 11:36 发表 [url=http://www.ruby-lang.org.cn/forums/redirect.php?goto=findpost&pid=12587&ptid=3778][img]http://www.ruby-lang.org.cn/forums/images/common/back.gif[/img][/url]
可能他们没有理解你的题意吧。
这题和实际编程挂钩的,没有经验的,可能不敢冒昧做。
其实没什么,做了、实践了就好。有大家帮着点评,提高更快,而且可以知道错在哪里,好在哪里。对吧! [/quote]
其实我也没很明确的答案,我只是希望大家能积极的去参与,和大家分享,鼓励大家去动手。参与就是好的:)
drive2me 2008-3-18 10:17
你可以在这里把你出题的原意和要大家了解的目标告诉大伙,大伙就可以自己检查,看看是否达到了目标。
这样的话,意义更大,对吧?!呵呵。:)