gpt4 book ai didi

mysql - rails : active-records query for entry in range & included in

转载 作者:行者123 更新时间:2023-11-29 06:36:03 28 4
gpt4 key购买 nike

我正在为结账流程开发运输实现。

我的应用程序有购物车、cart_items、orders 和 order_items。

所有商品的重量和尺寸都在数据库中,我计算订单和购物车模型中的total_weight。我还有一个 Shipping_service 模型,其中每个运输服务的 Weightmin 和 WeightMax 以及邮政区和陆地(国家)模型。

现在我想在购物车页面上仅显示符合购物车或订单重量的运输服务。

我想我的 carts_controller 应该是这样的:

class CartsController < ApplicationController
def show
@cart = Cart.find(params[:id])
@lands = Land.find(:all)
@shippingservices = Shippingservice.where('@cart.total_weight BETWEEN ? AND ?', :weightmin, :weightmax)
end

我的购物车型号是:

class Cart < ActiveRecord::Base
attr_accessor :total_weight

has_many :cart_items
has_many :products, :through => :cart_items
has_many :lands
has_many :shipping_services, :through => :postzones

def total_weight
cart_items.inject(0) {|sum, n| n.weight * n.amount + sum}
end
end

我的土地模型是

class Land < ActiveRecord::Base
has_many :shippingservices, :through => :postzones
has_many :postzones
has_many :carts
end

我的shipping_service模型是:

class Shippingservice < ActiveRecord::Base
has_many :lands, :through => :postzones
has_many :postzones
has_many :carts
has_many :orders
end

我的后区模型是:

class Postzone < ActiveRecord::Base
belongs_to :shippingservice
belongs_to :land
end

postzone 表具有lands 和shipping_services 的外键。

后者我想实现两个选择器字段:一个用于ship_to_countries,一个用于shipping_services,第二个选择器仅填充与第一个选择器中所选条目相关的条目。

我已经在 carts_controller 中进行了此操作:

@shippingservices = Shippingservice.includes(:lands, :postzones).where('postzones.land_id = ?', Land.first.id) 

仅将特定国家/地区的运输服务加载到第二个选择器中。但我不知道如何将与weight和postzone相关的两个where子句合并到一个查询中。

非常感谢任何帮助!

提前谢谢你。

最佳答案

方法total_weight是一个Ruby方法,在模型Cart中定义

那么您就无法在 SQL 语句中调用此方法。

您需要计算SQL语句中的总权重。

你应该尝试类似的东西

@shippingservices = Shippingservice.joins(carts: :cart_items).where(
'(cart_items.weight * cart_items.amount) BETWEEN ? AND ?', :weightmin, :weightmax
)

我没有尝试,但我认为它应该有效:)

关于mysql - rails : active-records query for entry in range & included in,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53812875/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com