我有一个用户模型,可以通过REST API和ActiveAdmin访问。由于存在大量重复的代码(几乎所有代码),所以干涸可能是个好主意。有很多主题处理这个问题,但我没有找到正确的方式。我把我的一些想法放在下面
再次创建重复的代码和函数
#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
但是(还)我还不知道在AA中如何做到这一点同时考虑到inherited_resource gem
同样关注似乎是一种很好的方式。但是,我会为每个动作创建单独的关注点,以便有一个问题来准确处理一个行为 方面,也使它们更易于重复使用。这再次似乎不必要地膨胀应用程序,并且也没有真正使用这样的问题。 (?)
由于模块无法实例化但完全实现操作,这可能就是我想要的。因此,每个控制器都包含所需的操作或扩展到ma模型而不是类。
事情是 - 我读的越多,我就越困惑。我希望你们中的一些人可以帮助我带些亮点,或者我可能会转向黑暗面使用C#和。再次:D:D 提前谢谢!
我在REST API和AA中都使用了这种创建方法来获取SMS资源,我调用了几个服务,但是如果复杂性增加,我必须在两个地方添加这些行。我怎么能避免这种情况?我有一个基本的SMSController,它从API端点和AA接口使用?
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