4

我在带有 MongoID gem 的 Rails 应用程序中使用 MongoDB 作为数据库。我想使用 n aafter_create 回调方法从模型中调用辅助方法。这怎么可能?
我的模型代码是:

class Department
  include ApplicationHelper
  after_create :create_news
  private
  def create_news
    @user = ApplicationHelper.get_current_users
  end
end

我的帮助代码是:

module ApplicationHelper
  def get_current_users
    current_user
  end
end

当我创建新部门时,会发生以下错误。

undefined method `get_current_users' for ApplicationHelper:Module

如何消除错误?
提前致谢。

4

3 回答 3

19

我也使用 mongoid 并且一直使用它。不过,这不应该是 mongoid 独有的。

ApplicationController.helpers.my_helper_method
于 2014-10-07T15:14:02.043 回答
1

如果你想要一个可以在你的视图中使用的帮助方法来返回当前用户,你可以在你的 ApplicationController 中这样做,例如:

private
def current_user
  @current_user ||= User.find(session[:user_id]) if session[:user_id]
end 
helper_method :current_user

然后您可以在任何视图中使用它。

如果您希望模型中的某个任意方法知道它正在处理的用户是什么,请在您在控制器中调用它时将其作为参数传递 给该方法。@current_user

您的代码似乎不完整,因此我无法真正看到您要完成的工作,但这是一种非常标准的做法。

于 2012-12-30T07:38:40.270 回答
-1

确保模块文件命名正确,这意味着在您的情况下 application_helper.rb 并且它位于帮助程序库中。

您还可以尝试在 ApplicationController (app/controller/application_controller.rb) 中包含帮助程序。

于 2012-12-30T07:09:57.980 回答