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

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

你可以在这里把你出题的原意和要大家了解的目标告诉大伙,大伙就可以自己检查,看看是否达到了目标。
这样的话,意义更大,对吧?!呵呵。:)
页: [1]
查看完整版本: 2008-03-14 测试题(00001) 点评