gpt4 book ai didi

ruby - 在 rails 4 中的事件记录上定义 method_missing 抛出 SystemStackError : stack level too deep on attributes

转载 作者:数据小太阳 更新时间:2023-10-29 08:09:30 24 4
gpt4 key购买 nike

我最近将我的应用程序升级到了 Rails 4.0 和 Ruby 2.0我无法理解为什么我的 method_missing 定义不起作用。我很确定我做的事情与以前没有什么不同。

具体来说,我正在尝试创建一个方法,让 ActiveRecord 对象通过多态关系响应对其 belongs_to 的对象的调用。

这是我的类(class):

歌曲.rb

class Song < ActiveRecord::Base
has_many :events, :as => :eventable
end

事件.rb

class Event < ActiveRecord::Base

belongs_to :eventable, :polymorphic => true

def method_missing(meth, *args, &block)
if meth.to_s == self.eventable_type
self.eventable
else
super
end
end

end

我希望能够在 eventable_type == 'Song' 时调用 event.song问题出在 self.eventable_type 上,它会触发堆栈溢出。

我在这里错过了什么?

最佳答案

method_missing 触发时,似乎还没有定义 eventable_type 方法(Rails 中的一些方法通过 method_missing 动态定义第一次调用他们)。

我会尝试不同的方法来获得您想要的值(value);也许 self.attributes["eventable_type"] 会起作用?

关于ruby - 在 rails 4 中的事件记录上定义 method_missing 抛出 SystemStackError : stack level too deep on attributes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16088392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com