任何代码编辑后,RoR未定义方法`attr_accessible'

时间:2013-01-04 08:08:56

标签: ruby-on-rails activerecord plugins activesupport

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

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

我在创建“帖子”时向用户授予积分。每当调用posts控制器的“create”动作时,我都会将插件配置为奖励积分。

问题:

当我启动服务器时,我会通过我的流程创建一个包含任何相关标签的新帖子。这非常有效。它将完美地工作,直到我以任何方式编辑我的代码(在控制器或模型中)。编辑后,在尝试创建新帖子时,我会收到此错误:

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

有意义吗?