Ruby on rails 干燥Rails控制器中的继承方法
我有一组基本的控制器,带有一组相当标准的RESTful方法。然后我有了第二套控制器来管理客户端微站点。第二组控制器与基本控制器几乎相同,只是每个用HTML响应的方法都需要一个额外的实例变量来表示要定义的微站点id(基本控制器不可用) 这意味着我在我的应用程序中重复了两次代码,这不是很容易维护的,特别是对于一个有很多控制器的大型应用程序。有没有一种方法可以告诉控制器继承一个方法,但是在继承的方法中插入一个额外的变量或其他逻辑 例如,如果我在下面有一个UsersController:Ruby on rails 干燥Rails控制器中的继承方法,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,inheritance,model-view-controller,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,Inheritance,Model View Controller,我有一组基本的控制器,带有一组相当标准的RESTful方法。然后我有了第二套控制器来管理客户端微站点。第二组控制器与基本控制器几乎相同,只是每个用HTML响应的方法都需要一个额外的实例变量来表示要定义的微站点id(基本控制器不可用) 这意味着我在我的应用程序中重复了两次代码,这不是很容易维护的,特别是对于一个有很多控制器的大型应用程序。有没有一种方法可以告诉控制器继承一个方法,但是在继承的方法中插入一个额外的变量或其他逻辑 例如,如果我在下面有一个UsersController: class U
class UsersController < ApplicationController
def index
end
end
class Clients::UsersController < UsersController
def index
@client_id = params[:id]
end
end
class UsersController
然后我有Clients::userscoontroller您可能需要一个:
在您的控制器中
class UsersController < ApplicationController
include DoSomething
def index
# Invoke shared code
something
end
end
class Clients::UsersController < UsersController
include DoSomething
def index
@client_id = params[:id]
# Invoke shared code
something
end
end
class UsersController
很难告诉您任何有用的信息,因为您忽略了所有相关的代码。在这一点上,我们可以建议“在一个方法中放置大量的流控制”,而不是其他什么。代码不是非常相关。这不是关于特定代码段的问题。这是一个关于设计模式的问题。我可以发布我的控制器的所有代码,但其中99%与问题无关,这就是我选择通用示例的原因。
class UsersController < ApplicationController
include DoSomething
def index
# Invoke shared code
something
end
end
class Clients::UsersController < UsersController
include DoSomething
def index
@client_id = params[:id]
# Invoke shared code
something
end
end