`
gaofan
  • 浏览: 925 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

method_missing 的问题

阅读更多
想用 method_missing构造动态方法,以"can_" 开头
ruby 代码
  1. class User < ActiveRecord::Base   
  2.     def has_role?(role_in_question)   
  3.     @_list ||= self.roles.collect(&:name)   
  4.     return true if @_list.include?("admin")   
  5.     (@_list.include?(role_in_question.to_s) )   
  6.   end  
  7.      
  8.     def method_missing(method_id,arg)   
  9.     method_name = method_id.id2name   
  10.     arr = method_name.split("_")   
  11.     if arr[0] == "can"  
  12.               has_role?(arg)   
  13.     else  
  14.         raise NoMethodError,"there is no method:#{method_name}"  
  15.     end  
  16.   end  
  17. end  
我跟踪后发现不执行此方法
分享到:
评论
1 楼 刑天战士 2007-12-28  
*args吧……

相关推荐

    Ruby元编程之梦中情人method_missing方法详解

    Ruby中的`method_missing`是元编程的一个核心特性,它允许你在类或模块中处理未定义的方法调用。当你尝试调用一个不存在的方法时,Ruby会默认抛出`NoMethodError`异常,但如果你定义了`method_missing`方法,它就会...

    ruby元编程之method_missing的一个使用细节

    在这个修改后的版本中,我们将`method_name`的打印语句移到了`times`块之外,这样无论何时调用`method_missing`,`method_name`都是可访问的,从而避免了死循环的问题。 #### 进一步讨论 1. **作用域的理解**:在...

    method_not_missing:因为露比

    gem install method_not_missing 外部依赖 PhantomJS(在OSX上brew install phantomjs ) 例子 require "method_not_missing" object = MethodNotMissing :: OmnipotentObject . new object . update ( [ 3 ] ) ## ...

    kp method for optical calculation.rar_missing1rq_价带导带_量子光学_量子计算_

    本代码是个人编写的计算GaN量子阱内导带,价带(6*6哈密顿量)的光学特性,包含光吸收,光增益,量子效率,波函数,计算包含导带-价带,导带-导带,价带-价带内部的跃迁的所有计算,使计算量子体系的光吸收的理想...

    method_R语言_

    针对描述中的主题"R语言下完全随机缺失条件下分类随机变量数据缺失插补方法的比较",我们将深入探讨R语言中处理数据缺失问题的方法,特别是针对完全随机缺失(Missing Completely at Random, MCAR)情况下的分类变量...

    JAD解决MISSING_BLOCK_LABEL心得

    当有try-catch-finally语句的时候会提示信息“Couldn't resolve all exception handlers in method ” 4. Currently Jad ignores the contents of the Line Number Table Attribute and the Source File Attribute...

    ruby元编程之创建自己的动态方法

    本文将深入探讨如何利用`method_missing`和`respond_to?`来创建动态方法,这是一种在Ruby社区中广泛使用的技巧,尤其是在诸如Rails这样的框架中。 #### 二、`method_missing`详解 `method_missing`是Ruby中的一个...

    looksee:IRB中的增压方法自省

    __id__ initialize method_missing singleton_method_undefined != __send__ instance_eval singleton_method_added == equal? instance_exec singleton_method_removed Kernel !~ enum_for

    编程之魂:Ruby中的元编程艺术

    def method_missing(method_name, *args, &block) if method_name.to_s.start_with?("get_") attribute_name = method_name.to_s[4..-1] puts "Fetching #{attribute_name}" @attributes[attribute_name] else...

    MetaProgramming-Play:重写 Ruby 注入方法以了解元编程

    第 10 周:创客学院在 Ruby 中玩转元编程挑战: 使用method_missing重新定义对象在询问has_unknown_attribute时的Reacthas_unknown_attribute 。 使用define_method创建Ruby 内置attr_accessor方法的布尔版本。代码...

    intro_to_metaprogramming:Ruby元编程简介

    使用send , define_method和method_missing遍历不同的元编程技术 将您的思维扩展到元编程,并让您考虑可以在自己的代码中利用它的地方 设置 要求 该讲习班是使用Ruby 1.9.3创建的,但是在2.1.2版本中有效。 假设您...

    Ruby元编程的一些值得注意的地方

    如果误用了`method_missing`,可能会导致程序中的方法调用出现异常,甚至引发安全问题。因此,在可能的情况下,应优先考虑使用`delegate`或`define_method`来实现动态方法调用。 #### 九、捕捉定义良好的方法 在...

    Metaprogramming ruby

    2. **方法定义和调用**:Ruby支持多种方法定义方式,如`def`关键字、`define_method`、`method_missing`等。其中,`method_missing`是一个特殊的方法,用于处理未定义的方法调用,是实现动态行为的重要工具。 3. **...

    flickr_party:Flickr API 的包装器,具有真正的应用程序身份验证,使用 HTTParty

    我们建立在 HTTParty 之上,并做了一些method_missing魔法来接受官方 Flickr API 支持的任何方法。 您还可以(可选)使用auth_url和complete_auth方法(见下文)进行经过身份验证的 API 调用。 安装 gem install ...

    manavolt:是时候参加黑客马拉松了! 伏特风格!

    attributes, :method_missing, :assign_attribute, :read_attribute, :read_new_model, :new_model , :new_array_model, :expand!, :&lt;&lt;, :save!, :promise_for_errors, :buffer, :state,

    ruby元编程.pdf

    7. 调用者方法(Method Missing):Ruby提供了一个特殊的叫做 `method_missing` 的方法。当一个对象接收到一个未定义的方法调用时,Ruby会尝试调用 `method_missing`。利用这一点,程序员可以创建出非常有表现力的...

    queryable_array:提供简化的 DSL,允许按属性搜索对象数组

    它覆盖[] 、 find_all和method_missing以提供一种简化的 DSL,用于通过查询对象的属性来查找对象。 在查看完整文档。 安装 gem install queryable_array 要求 Ruby 1.9+ 用法 基本¶ ↑ 使用一组对象初始化...

Global site tag (gtag.js) - Google Analytics