Ruby on rails Rails 4.2干燥控制器
我有一个通过RESTAPI和ActiveAdmin访问的用户模型。因为有很多重复的代码(几乎全部),所以干掉这些代码可能是个好主意。处理这个问题有很多话题,但我没有找到合适的方法。我把我的一些想法放在下面 每个控制器中的UserController实例 再次创建重复的代码,并删除函数Ruby on rails Rails 4.2干燥控制器,ruby-on-rails,model-view-controller,architecture,Ruby On Rails,Model View Controller,Architecture,我有一个通过RESTAPI和ActiveAdmin访问的用户模型。因为有很多重复的代码(几乎全部),所以干掉这些代码可能是个好主意。处理这个问题有很多话题,但我没有找到合适的方法。我把我的一些想法放在下面 每个控制器中的UserController实例 再次创建重复的代码,并删除函数 #AA controller do def create @userController = UserController.new @userController.create(params)
#AA
controller do
def create
@userController = UserController.new
@userController.create(params)
end
end
#REST API
#Create instance through callback
def create
@userController.create(params)
end
遗产
我希望有一个基本的CRUD控制器通过这样的继承位于我的模型之上
Class BaseUserController < ApplicationController
Class Api::UserController < BaseUserController
也许您应该从以下问题开始:“如果fak显然是域业务逻辑的一部分,那么为什么fak是‘控制者’中的用户身份验证”。这里有一件事可以帮助您:停止尝试在MVC架构模式中安装Rails。这和它无关,有趣的问题。考虑到只有一行代码,您的示例没有明确说明复制了哪些代码。有没有一个例子,你可以给我们,你有一个很好的重复代码块?嘿@Jonathanalard,我包括一个例子块。希望这使它更清晰,就像你需要在模型中尽可能多地执行操作一样,并尝试将你的控制器操作变成两行。(提示:编写希望在控制器中使用的代码,然后在模型中实现它)
controller do
def create
@customer =Customer.find_by_phone(params[:sms_message][:phone])
SmsService.sendSMS(@customer[:phone],Cryptoalgorithm.sms(@customer[:id], @customer[:recharge_token],params[:sms_message][:text].to_i)
@sms = SmsMessage.create(:customer_id => @customer[:id], :text => params[:sms_message][:text], :phone => params[:sms_message][:phone])
@customer.increment!(:recharge_token)
redirect_to admin_sms_message_path(@sms[:id])
end
end