问题标签 [method-missing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Rails:调用“id”主键方法时出现“堆栈级别太深”错误
这是另一个问题的转贴,这次最好隔离。在我的 environment.rb 文件中,我更改了这一行:
到这一行:
从那以后,这个电话:
当 config.cache_classes = false 时,在开发环境中第二次运行后出现“堆栈级别太深”错误。如果 config.cache_classes = true,则不会出现问题。该错误是由 active_record/attribute_methods.rb 第 252 行附近的以下代码引起的:
对“id”函数的调用重新调用method_missing,没有什么可以阻止id被一遍又一遍地调用,导致堆栈级别太深。
我正在使用 Rails 2.3.8。Category 模型 has_many :subcategories。该调用在上述行的变体上失败(例如 Category.first.subcategory_ids,使用“each”而不是“map”等)。
任何想法将不胜感激。
谢谢!阿米特
ruby-on-rails - Ruby on Rails 插件:acts_as_taggable_on_steroids。不断收到“method_missing”未定义的局部变量或方法“acts_as_taggble_on”
我正在尝试为我的 rails 应用程序实现标记系统。我使用了流行的插件acts_as_taggable_on_steroids,并按照说明安装它。然后我在模型中包含了acts_as_taggable,我想在模型中添加标签,但是当我尝试启动服务器时,我不断收到错误method_missing': undefined local variable or method
acts_as_taggable' for # (NameError)
我在google上查看,作者建议尝试acts_as_taggable_on,但这仍然没有解决问题。我已经在这个问题上苦苦挣扎了几个小时,但仍然不知道问题出在哪里。有人可以解释一下吗?
非常感谢大家的帮助!!
ruby - 在 Ruby 中使用和不使用括号调用 method_missing 的区别
是否有可能在 Ruby 中的 method_missing 声明中确定是否使用括号表示法调用了给定的 missing_method(没有任何参数),即:
或使用无括号符号:
?
我需要这个来解决我非常具体的测试问题。
ruby-on-rails - 如果实例是通过 ActiveRecord 关联定义的,则自定义 method_missing 被忽略
我有可能处于不同状态的提交,并编写了一个 method_missing 覆盖,允许我通过如下调用检查它们的状态
这非常有效。
由于各种可能不太好的原因,我也有一个模型Packlet
,称为belongs_to a meeting和belongs_to a submission。然而,我惊讶地发现
返回一个NoMethodError
。另一方面,如果我将#draft?
方法硬编码到Submission
中,则上述方法调用有效。
即使实例是通过 ActiveRecord 关联定义的,如何让我的 method_missing 方法被识别?
ruby - 使用 Ruby 解析 Tcl DSL
我希望能够解析一些参数没有被字符串包围的 Tcl 代码。
考虑这个 tcl 代码:
对于那些不熟悉 Tcl 的人,foo
是方法名和bar
参数(引号在 Tcl 中是可选的)。
前面的代码将输出:
是否可以使用 ruby 解析完全相同bar
的输入(未引用)?
等效的 ruby 代码是:
当然,当它到达时会失败,bar
因为它预计会被引用。
我试过修补method_missing
但它以相反的顺序解析:
有没有人对这类问题有一个干净的解决方案。我想避免对字符串进行标记,因为与词法分析相比,通过调用方法读取数据需要最少的工作。但如果我想做一些不可能的事情,我想知道。谢谢。
ruby - 带有 method_missing 的 Ruby 块
请注意,这是对我的问题的跟进。
我正在尝试解析以下 Tcl 代码:
在 Tcl 中,foo
是方法名,bar
是参数,其余的是要处理的“块” eval
。
现在这是我目前对此的实现:
输出以下内容:
在此示例中,当块被传递给foo
方法时,它不存在。然而method_missing
它确实存在(至少它似乎存在)。这里发生了什么?
请注意,我知道 ruby 括号的优先级并意识到这是有效的:
但是,我想省略括号。那么这在 ruby 中是否可行(没有词法分析)?
c# - 先知物理学……你好世界……?
我不知道为什么,但我似乎无法找出为什么这不起作用......我正在尝试做一些非常简单的事情,比如刚刚从屏幕上掉下来的东西。
似乎最新的下载和网站上的第一个示例代码,我还是错了。
我有这个:
但我得到2个错误:
没有CreateBody()
方法(AddBreakableBody()
虽然有)
CircleShape 构造函数接受 2 个参数(这很简单,但在示例中仍然出错)
我已经尝试了很多东西,我很困惑为什么我能得到这个。此代码对其他人有用吗?我的dll错了吗?
ruby-on-rails - rails 中的 method_missing 和 association_proxy
所以,这是我的问题。我目前正在为 Rails 站点构建一个简单的身份验证系统。为此,我有 3 个类:Person、Session 和 Role。在我的 Person 模型中,我已经定义method_missing
为根据本指南动态捕获角色。
在我的 application_controller 中,我有一些逻辑来处理登录和注销,其结果通过以下方式为我提供了当前登录的用户:
当前会话@user = @application_session.person
在哪里@application_session
现在在我的一个控制器中,我不希望任何人能够做任何事情,除非他们是管理员,所以我包括:
before_filter @user.is_an_admin?
NoMethodError
即使我method_missing
在我的模型中定义了,这也会引发 a 。我尝试定义is_an_admin?
,让它总是作为测试返回 true ,这很有效。
根据this question,我认为问题可能与代理关联有关。当我运行时:
puts @user.proxy_owner
我得到一个会话对象,因为每个用户(Person)可以有很多会话,并且我从当前会话中获取了我的用户(Person)。
我很困惑为什么@user.is_an_admin?
不在我的 Person 控制器中调用 method_missing 方法。如果您需要更多信息或代码片段,请告诉我。
我在 Ruby 1.9 上使用 Rails 3
ruby-on-rails - Rails:使用关联时未在模型上调用 method_missing
我当前的代码:
发生这种情况是因为 rails 中的代码仅将存在的方法传递给模型。
这就是我要的:
我怎样才能做到这一点?
ruby - 如何在 ruby 中编写包含 method_missing 的模块
我有几个扩展方法缺失的模块:
这一切都很好,例如ObjectA.new.hello_there
输出"Hello, hello_there"
。同样,ObjectB.new.goodbye_xxx
输出"Goodbye, xxx"
. respond_to?
也可以,例如ObjectA.new.respond_to? :hello_there
返回 true。
SaysHello
但是,当您想同时使用and时,这并不能很好地工作SaysGoodbye
:
虽然ObjectC.new.goodbye_aaa
工作正常,但ObjectC.new.hello_a
行为奇怪:
它正确输出,然后引发错误。也不respond_to?
正确,ObjectC.new.respond_to? :hello_a
返回false。
最后,添加这个类:
行为也很奇怪。ObjectD.new.lol_zzz
有效,但是 ObjectD.new.hello_aand ObjectD.new.goodbye_t
在输出正确的字符串后都会抛出一个名称异常。respond_to?
hello 和 goodbye 方法也失败了。
有没有办法让这一切正常工作?解释如何method_missing
、模块和super
交互也是非常有用的。
编辑:coreyward 解决了这个问题,如果我super.<method-name>(args...)
在我定义的所有方法中使用 super 而不是,程序可以正常工作。我不明白为什么会这样,所以我在Super.<method-name> 在 ruby 中做了什么?