我正在实施一个很棒的插件,我发现它可以根据用户行为向用户授予积分/徽章/等级。它被称为Merit,可以在这里找到:https://github.com/tute/merit
我有两个型号:“发布”和“标签”。关联是:帖子有很多标签,标签属于帖子。
我在创建“帖子”时向用户授予积分。每当调用posts控制器的“create”动作时,我都会将插件配置为奖励积分。
问题:
当我启动服务器时,我会通过我的流程创建一个包含任何相关标签的新帖子。这非常有效。它将完美地工作,直到我以任何方式编辑我的代码(在控制器或模型中)。编辑后,在尝试创建新帖子时,我会收到此错误:
undefined method `attr_accessible' for Merit::Action:Class
只要我更改文件的基本内容(这包括简单地添加调试“puts”语句),我的编辑类似乎并不重要。此时,我根本无法创建帖子,因为每次创建帖子的尝试都会导致相同的错误。然后,一旦我重新启动WEBrick,它将再次工作(直到我再次编辑代码)。
这里发生了什么?如果编辑我的代码的简单行为导致attr_accessible在Merit插件中突然变为未定义,直到我重新启动服务器?
答案 0 :(得分:0)
这似乎是一个ruby类重载问题。
我认为您的插件不会与您更改的文件一起重新加载,因此gem的行为不会重新注入新代码中。当您重新启动rails服务器时,应用程序的代码和gem的代码是同步的,gem的行为可以在应用程序的代码中注入。
有意义吗?