1

我有三个模型。

  • users_controllers.rb
  • 社区控制器.rb
  • community_tipics_controller.rb

我正在使用名为check_digit的函数

def checkdigit
 (transaction)
end

我把它放在所有的控制器中。并通过 before_filter 调用它。
但我认为我在浪费,因为我只是将上面完全相同的代码粘贴到所有控制器上。

如果我的控制器共同使用它,我应该把它放在哪里?
我应该把它放在控制器/application_controller.rb 中吗?

4

3 回答 3

2

有几种方法可以做到这一点,一些可能的方法是(如果我要这样做)

第一种方法

如果这是 application_controller.rb 中的控制器使用的简单方法

private
def checkdigit
 (transaction)
end

第二种方法

如果您的功能被特定类别使用,(通常我经常这样做),创建一个单独的控制器并让您的所有其他控制器由它继承

例如:如果您的方法仅使用了我的管理员,并假设您还有更多类似的方法

class AdminController < ApplicationController
   layout 'admin'

   private
   def checkdigit
     (transaction)
   end

end

and

class UsersController < AdminController

end

第三种方法

如果模型/控制器等/将使用您的方法。请考虑将其作为模块

module CommonMethods
   def checkdigit
     (transaction)
   end
end

class UsersController < ApplicationController
    include CommonMethods 
end

高温高压

于 2012-12-29T19:22:16.680 回答
1

你可以把它放进去helpers/application_helper.rb

于 2012-12-29T18:56:34.117 回答
1

你是对的,所有控制器需要的所有常用方法都应该存储在ApplicationController.

此外,您还应该在此控制器中的所有控制器之间保持通用逻辑。

编辑:
如果他们只是帮手,那么你会把他们放在帮手去的地方,请参阅@simone 的答案。

于 2012-12-29T18:56:37.297 回答