Я использую Ruby on Rails 3, и я знаю, в каком случае хорошо использовать Модули.
У меня есть контроллер, включающий множество частных методов, которые я использую в этомпуть:
class UsersController < ApplicationController
def update
params[:option1] = get_user_option1
params[:option2] = get_user_option2
if params[:option2]
params[:saving_success] = update_user
end
...
if params[:saving_success]
flash[:notice] = another_method_1
else
flash[:error] = another_method_2
end
end
private
def update_user
if params[:option1] == something
@user.save
end
end
def another_method_1
params[...] = ...
...
end
Как видите, в приватных методах у меня есть такие вещи, как ActiveRecords и методы params .Я знаю, что в модуле вы не можете использовать эти ActiveRecords или методы params напрямую, но вы можете передавать их как аргументы, как в этом примере:
# In the controller file
class UsersController < ApplicationController
include Users
def update
params[:option] = "true"
@users = Users.find(1)
Users::Validations.name (@user, params[:option])
...
end
end
# In the module file
module Users
module Validations
def Validations.name(user, param)
user == "Test_name" if param
# Normally the following is not possible:
# @user == "Test_name" if params[:option]
end
end
end
Итак, что вы посоветуете в моем случае?Хорошо ли использовать отдельные модули?
Вопросы второстепенного значения (на данный момент ...):
- А как насчет производительности?
PS I: Не обращайте внимания на простоту примеров.Они написаны просто для того, чтобы понять мою дилемму о передаче ActiveRecords и методов params.
PS II: Если вам нужна другая информация, дайте мне знать.