0

Omniauth で認証された User モデル、名前と価格を含む Product モデル、ShoppingCart および ShoppingCartItem モデル ( acts_as_shopping_cartgem を使用) を備えた超基本的な e コマース アプリがあります。

私の問題は、Omniauth プロバイダーを介してユーザーを認証するときに、認証相手に基づいて割引を提供したいということです。

彼らが Facebook でサインインしたとしましょう。その場合、私は彼らに 20% の割引を提供したいと考えています。実際にどうすればよいのかわかりません - Product および ShoppingCartItem モデルにこのビジネス ロジックを記述し、次のように設定したいと思います。

def self.price 
  if current_user.provider == 'facebook'
    super * 0.8 
  else
    super
end

current_userしかし、セッションによって設定されているため、モデル内でアクセスできません。

current_user にアクセスできるコントローラーで行う必要がありますか? 次に、コントローラー内で Product および ShoppingCartItem クラスを開いて価格メソッドをオーバーライドする必要がありますが、これはすべて間違っていると感じており、率直に言って、それが機能するかどうかもわかりません。

4

2 に答える 2