2016-09-19 2 views
0

J'ai une application Rails avec une API namespaced et des contrôleurs réguliers qui correspondent.Dans Rails, comment puis-je savoir, depuis un modèle, si la requête est passée via un contrôleur API ou un contrôleur régulier?

Les deux ensembles de contrôleurs utilisent bien entendu les mêmes modèles. Par exemple, API :: CouponController et CouponController utilisent tous les deux le modèle Coupon.

Nous construisons d'abord des fonctionnalités dans le domaine web et avons besoin d'une certaine logique conditionnelle dans le modèle pour savoir si la requête provient de l'API ou du contrôleur régulier, donc nous pouvons bifurquer la logique du modèle. Comment puis-je faire ceci?

Ou est-il un moyen d'utiliser un modèle différent pour chaque paire de contrôleurs, mais le point à la même table?

+0

Qu'est-ce que vous voulez exactement faire? –

Répondre

-2

Essayez ceci, j'ai énuméré un exemple, il peut être utile

app/controllers/api/coupon_controller.rb 

class Api::CouponController < Api::ApiController 
    def index 
    Coupon.test_method(params) 
    end 
end 

app/controllers/coupon_controller.rb 

class CouponController < ApplicationController 
    def index 
    Coupon.test_method(params) 
    end 
end 

app/models/coupon.rb 
class Coupon 
    def self.test_method(params) 
    return "You can check your controller and action using params" 
    end 
end 

Vérifiez le contrôleur et l'action dans test_method

params[:controller] 
params[:action]