4

我正在实现一个很棒的插件,我发现它可以根据用户行为向用户奖励积分/徽章/排名。它被称为 Merit,可以在这里找到:https ://github.com/tute/merit

我有两个模型:“发布”和“标签”。关联是:帖子有很多标签,标签属于一个帖子。

当用户创建“帖子”时,我会向他们奖励积分。每当调用帖子控制器的“创建”操作时,我都会将插件配置为奖励积分。

问题:

当我启动服务器时,我会通过我的流程来创建带有任何关联标签的新帖子。这完美地工作。在我以任何方式编辑我的代码(在控制器或模型中)之前,它将完美运行。编辑后,在尝试创建新帖子时,我会收到此错误:

undefined method `attr_accessible' for Merit::Action:Class

只要我更改文件的基本内容(这包括简单地添加调试“puts”语句),我进行什么样的编辑似乎并不重要。此时,我根本无法再创建帖子,因为每次尝试创建帖子都会导致相同的错误。然后,一旦我重新启动 WEBrick,它将再次工作(直到我再次编辑代码)。

这里发生了什么? 为什么编辑我的代码的简单行为会导致 attr_accessible 在 Merit 插件中突然变得未定义,直到我重新启动服务器?

4

1 回答 1

0

这似乎是一个 ruby​​ 类重新加载问题。

我认为您的插件不会与您更改的文件一起重新加载,因此 gem 的行为不会重新注入到新代码中。当您重新启动 Rails 服务器时,应用程序的代码和 gem 的代码是同步的,并且 gem 的行为可以注入到应用程序的代码中。

是否有意义?

于 2013-08-21T10:12:04.243 回答