如何在Rails中使用可重用的控制器方法?

时间:2016-06-20 15:40:43

标签: ruby-on-rails ruby

我对Rails相对较新,正致力于创建一个简单的用户身份验证系统,以掌握Rails的工作原理。

我目前正处于创建一些可以在我的控制器中使用的方法的地步:

is_logged? # => true

current_user_id # => 6

这些将用于与会话进行交互,主要是因为我不会在控制器中重复自己。

我将在哪里定义这些函数以及如何将它们包含在控制器中?

非常感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:7)

方法1

您可以在app/helpers/my_module.rb内的帮助文件中定义这些方法。您可以在那里创建一个模块,将所有方法放在其中,然后在控件中包含模块以使用这些方法。

module MyMoule
  def is_logged?
    ...
  end
end

然后在你的课程中包含模块

class MyClassController < ApplicationController
  include MyModule

  def my_method
    #Use it like this
    logged_in = MyModule.is_logged?
  end
end

方法2

如果您使用与会话相关的内容,则可以将它们放在application_controller.rb内。由于您的所有控制器都将继承ApplicationController,因此您可以使用这些方法。

class ApplicationController < ActionController::Base
  def is_logged?
    ...
  end
end

在您的其他控制器中,您可以直接使用它们。

class MyClassController < ApplicationController
  def my_method
    logged_in = is_logged?
  end
end