ruby-on-rails - 任何代码编辑后的 ​​RoR 未定义方法 `attr_accessible'

标签 ruby-on-rails activerecord plugins activesupport

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

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

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

问题:

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

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

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

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

最佳答案

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

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

是否有意义?

关于ruby-on-rails - 任何代码编辑后的 ​​RoR 未定义方法 `attr_accessible',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14153421/

相关文章:

ruby-on-rails - Rails - 更新模型 "in the future"

javascript - 实时查询插件不适用于可见属性选择器

jquery - .hashchange 不跳转到 anchor 标记?

ruby-on-rails - 找不到 UsersController#create 的模板,渲染头 :no_content

ruby-on-rails - 如何即时将当前目录的 bin/path 添加到 PATH

ruby-on-rails - 采摘多个连接表

ruby-on-rails - has_many_polymorphs 是什么意思 "Referential integrity violation"?

eclipse - 禁用 Saros 欢迎页面

ruby-on-rails - rails - 如何设置模型新记录的 id 值有很多/属于关系?

ruby-on-rails - 如何在 Ubuntu 16.04 上安装 mysql2 [错误 : Error installing mysql2: ERROR: Failed to build gem native extension.]