我有一个模型,用户可以在我的网站上以多种方式进行修改。首先,我使用控制器为一组视图创建了它的方法,例如:
#controller1.rb
def edit_object
end
def render_object
end
我可以以相同的方式设置多个控制器,但每个控制器中的一些(不是全部)逻辑是相同的。应该让一个main_object_controller
来管理模型并让其他控制器调用main_object_controller
中的方法,将方法保存在单独的控制器中,或者让每个视图的每个方法都修改main_object_controller
中的模型? / p>
答案 0 :(得分:0)
这听起来是了解Rails concerns的好时机。
它们基本上是ruby模块,您可以在其中定义需要在多个位置重用的方法;此外,Rails 4会自动加载app/models/concerns
和app/controllers/concerns
中的所有文件。
例如,假设您在app/controllers/concerns/edit_methods
中有疑虑:
module EditMethods
def edit_object
# ...
end
def render_object
# ...
end
end
要在其他控制器中使用这些功能,您只需要包含以下问题:
class PostsController < ApplicationController
include EditMethods
def edit
# you can call all methods defined in the concern
edit_object
# ...
end
end