Ruby on rails 4 如何创建自定义运费-Spree
我拥有的是一个拥有多个不同用户角色的网站。通常只有管理员和用户。我有多个不同的用户零售,贸易等 客户想要的是,每种产品都有单独的运输成本。用户的实际成本有所不同,因此贸易运费可能为8美元,零售费为10美元。如果选择了多个产品,第一个产品将100%发货,每增加一个产品将有50%发货。此价格因客户装运地点而异。根据物品的类别也有所不同,例如,它们有座位类别和鱼缸类别。座位类别可能是15美元,鱼缸可能是17美元 我的想法是,每个类别都有自己的装运类别,然后装运方法就是位置。这可以很好地工作,但棘手的部分是如何根据用户登录的内容进行调整。我所给出的价格与零售航运和贸易航运之间的差异一致。贸易航运始终是零售航运的80% 基本上,如果我能找到在哪里进行运输计算,那就太好了。这样,我可以测试用户是否是交易客户,并将值更改为实际值*.80,否则该值为正常值 如果你们中有人能抽出时间帮我解决这个问题,我将不胜感激 基本上,如果我能找到 运费计算完成 计算是在Spree::Calculator::Shipping classes FlatRate、“PerItem”等中完成的。请检查 您可能需要自定义计算器或装饰现有方法,因此在models/spree/calculator/shipping/my_custom_method.rb中添加文件: 基本上,如果我能找到 运费计算完成 计算是在Spree::Calculator::Shipping classes FlatRate、“PerItem”等中完成的。请检查 您可能需要自定义计算器或装饰现有方法,因此在models/spree/calculator/shipping/my_custom_method.rb中添加文件:Ruby on rails 4 如何创建自定义运费-Spree,ruby-on-rails-4,spree,Ruby On Rails 4,Spree,我拥有的是一个拥有多个不同用户角色的网站。通常只有管理员和用户。我有多个不同的用户零售,贸易等 客户想要的是,每种产品都有单独的运输成本。用户的实际成本有所不同,因此贸易运费可能为8美元,零售费为10美元。如果选择了多个产品,第一个产品将100%发货,每增加一个产品将有50%发货。此价格因客户装运地点而异。根据物品的类别也有所不同,例如,它们有座位类别和鱼缸类别。座位类别可能是15美元,鱼缸可能是17美元 我的想法是,每个类别都有自己的装运类别,然后装运方法就是位置。这可以很好地工作,但棘手的部
好的,这就是我到目前为止的情况 应用程序内/models/spree/calculator/shipping/per_item.rb 我从\vendor\bundle\ruby\1.9.1\gems\Spree\u core-2.4.7\app\models\Spree\calculator\shipping\per\u item.rb复制的Spree标准模型
require_dependency spree/shipping_calculator
module Spree
module Calculator::Shipping
class PerItem < ShippingCalculator
preference :amount, :decimal, default: 0
preference :currency, :string, default: ->{ Spree::Config[:currency] }
def self.description
Spree.t(:shipping_flat_rate_per_item)
end
def compute_package(package)
if package.contents.sum(&:quantity) > 1
compute_from_multiple(package.contents.sum(&:quantity))
else
compute_from_single(package.contents.sum(&:quantity))
end
end
def compute_from_multiple(quantity)
(self.preferred_amount / 2) + ((self.preferred_amount * quantity) / 2
end
def compute_from_single(quantity)
self.preferred_amount * quantity
end
end
这会产生一个错误:
undefined local variable or method `spree_current_user'
有人知道如何检查模型中的当前用户吗?好的,到目前为止我已经知道了 应用程序内/models/spree/calculator/shipping/per_item.rb 我从\vendor\bundle\ruby\1.9.1\gems\Spree\u core-2.4.7\app\models\Spree\calculator\shipping\per\u item.rb复制的Spree标准模型
require_dependency spree/shipping_calculator
module Spree
module Calculator::Shipping
class PerItem < ShippingCalculator
preference :amount, :decimal, default: 0
preference :currency, :string, default: ->{ Spree::Config[:currency] }
def self.description
Spree.t(:shipping_flat_rate_per_item)
end
def compute_package(package)
if package.contents.sum(&:quantity) > 1
compute_from_multiple(package.contents.sum(&:quantity))
else
compute_from_single(package.contents.sum(&:quantity))
end
end
def compute_from_multiple(quantity)
(self.preferred_amount / 2) + ((self.preferred_amount * quantity) / 2
end
def compute_from_single(quantity)
self.preferred_amount * quantity
end
end
这会产生一个错误:
undefined local variable or method `spree_current_user'
有人知道如何检查模型中的当前用户吗?我想你可以检查package.order.user,如果是零-你的买家是匿名的。我想你可以检查package.order.user,如果是零-你的买家是匿名的。
undefined local variable or method `spree_current_user'