Omniauth で認証された User モデル、名前と価格を含む Product モデル、ShoppingCart および ShoppingCartItem モデル ( acts_as_shopping_cart
gem を使用) を備えた超基本的な 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 クラスを開いて価格メソッドをオーバーライドする必要がありますが、これはすべて間違っていると感じており、率直に言って、それが機能するかどうかもわかりません。