0

我有一个包含在插件中的类,其中包含以下行

用户.rb

class My::User < My::AbstractModel
  delegate :message_t, :to => ApplicationHelper

  #omited
end

所以我需要在这个模型中调用application_helper.rb中定义的*'message_t'*函数,

但是,Jenkins 未能对其进行测试,并给出错误“未初始化的常量 My::User::ApplicationHelper”,所以我想用户模型是在 application_helper.rb 之前加载的。我该如何解决?有没有其他方法可以调用 *'message_t'* 或者我可以更改文件加载顺序吗?

4

2 回答 2

1

您无法从模型层访问 rails 助手。帮助器旨在协助呈现,并由视图(有时是控制器)层使用。

此外,delegate用于将消息传输到直接关联的模型 - 而不是任意类。

我建议将该message_t方法从 ApplicationHelper 中移出到您的模型可能需要的某个库文件中。然后使用代理对象来调用它,而不是使用delegate. 或者你可以为此目的关联一个代理对象,delegate如果你喜欢它的声音就使用它:)

于 2012-09-03T03:54:07.950 回答
0

你可以require 'application_helper'在你的模型中。它将确保 application_helper 在您的模型之前加载。

于 2012-09-03T04:09:32.967 回答