我有三个模型。
- users_controllers.rb
- communities_controller.rb
- community_tipics_controller.rb
我使用的函数名为check_digit
def checkdigit
(transaction)
end
我把它放在所有控制器中。并通过before_filter调用它。
但是我认为我浪费了,因为我只是把上面完全相同的代码粘贴到所有的控制器上。
如果我的控制器正在使用它,我应该把它放在哪里?
我应该把它放在controllers/application_controller.rb中吗?
有几种方法可以做到这一点,一些可能的方法是(如果我要这样做)
<<p> 1方法/strong>如果这是控制器使用的简单方法内部application_controller.rb
private
def checkdigit
(transaction)
end
第二个方法
如果你的函数被一个特定的类别使用,(这通常是我经常做的),创建一个单独的控制器,并让你所有的其他控制器继承它
例如:如果你的方法只使用了我的管理员,并且假设你有更多这样的方法
class AdminController < ApplicationController
layout 'admin'
private
def checkdigit
(transaction)
end
end
and
class UsersController < AdminController
end
3
如果你的方法是/将被模型/控制器等使用。考虑把它变成一个模块
module CommonMethods
def checkdigit
(transaction)
end
end
class UsersController < ApplicationController
include CommonMethods
end
HTH
可以放在helpers/application_helper.rb
您是正确的,所有控制器需要的所有常用方法都应该存储在ApplicationController
中。
此外,您还应该保持该控制器中所有控制器之间的公共逻辑。
编辑:
如果他们只是帮助,那么你会把他们放在帮助的地方,看看@simone的答案。