Ich baue eine E-Commerce-Website und möchte den Produktpreis aufgrund der IP-Adresse des Benutzers anzeigen. Um die IP zu bekommen benutze ich diesen Code: current_user.current_sign_in_ip
. Um den Bereich der IP-Adresse zu erhalten, verwende ich diesen: Geocoder.search(current_user.current_sign_in_ip)
. Mein Product
Modell ist mit einem Currency
Modell über eine Tabelle ProductCurrency
verbunden, wo ich product_id
, currency_id
und "Preis" speichern.Wie kann ich den Produktpreis aufgrund der IP-Adresse des Benutzers anzeigen
class Product < ApplicationRecord
belongs_to :category
has_many :variants
has_many :product_currencies
has_many :currencies, through: :product_currencies
accepts_nested_attributes_for :product_currencies, allow_destroy: true
accepts_nested_attributes_for :variants, allow_destroy: true, reject_if: :all_blank
end
class Currency < ApplicationRecord
has_many :product_currencies, dependent: :destroy
has_many :products, through: :product_currencies
has_many :currency_regions
has_many :regions, through: :currency_regions
end
class ProductCurrency < ApplicationRecord
belongs_to :product
belongs_to :currency
end
Also, meine Product
können mehrere Währungen haben (EUR, USD) und Preise (100 EUR, 150 USD). Für ein Currency
Modell habe ich eine Verbindungstabelle namens CurrencyRegion
, wo ich currency_id
und region_id
speichern. Und ein verwandtes Modell Region
class Region < ApplicationRecord
has_many :currency_regions
has_many :currencies, through: :currency_regions
end
class CurrencyRegion < ApplicationRecord
belongs_to :currency
belongs_to :region
end
Sogenannte, was kann ich tun Produktpreis in USD angezeigt werden, wenn die Nutzer-IP-Adresse aus den USA ist? Danke voraus.
Dank, so scheint es, die Lösung, die ich brauche –