打印

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

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

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

跟帖即可。

TOP

第一题:大家很积极,也非常不错。

第二题:好像除了 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 即可。

大家的答案非常精彩,内容有点多,我需要整理,我需要点时间,请稍等。我更期待大家一起来参与:)
本帖最近评分记录
  • blackanger R币 +10 感谢点评,学习了。 2008-3-17 11:58

TOP

可能他们没有理解你的题意吧。
这题和实际编程挂钩的,没有经验的,可能不敢冒昧做。
其实没什么,做了、实践了就好。有大家帮着点评,提高更快,而且可以知道错在哪里,好在哪里。对吧!
Flying Piggy...! 
天地人合一!

TOP

引用:
原帖由 drive2me 于 2008-3-17 11:36 发表
可能他们没有理解你的题意吧。
这题和实际编程挂钩的,没有经验的,可能不敢冒昧做。
其实没什么,做了、实践了就好。有大家帮着点评,提高更快,而且可以知道错在哪里,好在哪里。对吧!
其实我也没很明确的答案,我只是希望大家能积极的去参与,和大家分享,鼓励大家去动手。参与就是好的:)

TOP

你可以在这里把你出题的原意和要大家了解的目标告诉大伙,大伙就可以自己检查,看看是否达到了目标。
这样的话,意义更大,对吧?!呵呵。
Flying Piggy...! 
天地人合一!

TOP

2008-10-06 22:33 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html) @38.103.63.60