gpt4 book ai didi

ruby-on-rails - 带有 if 条件的 Rails has_scope

转载 作者:数据小太阳 更新时间:2023-10-29 08:04:19 24 4
gpt4 key购买 nike

在我的表单中,我有很多字段,当我在我的 url 中提交我的表单时,我看到很多空参数,比如 url?a=&b=&c= 和我的 has_scope 模型认为我想使用它参数,但具有空值,但这是错误的。

我的模型和 Controller 的一部分:

class CarsController < ApplicationController
has_scope :by_manufacturer
has_scope :by_price, :using => [:price_from, :price_to]
end

class Car < ActiveRecord::Base
scope :by_manufacturer, -> vehicle_manufacturer_id { where(:vehicle_manufacturer_id => vehicle_manufacturer_id) }
scope :by_price, -> price_from, price_to { where("price >= ? AND price <= ?", price_from, price_to) }
end

我怎么能这样写:

if vehicle_manufacturer_id.present? 
has_scope :by_manufacturer
end

检查现场情况如何正确?在哪里写入以及如何写入?

最佳答案

Has_scope 有一个 :if 条件,您可以使用它来确定何时应该使用范围。示例:

has_scope :by_manufacturer, if: vehicle_manufacturer_id.present?

或者给作用域本身添加一个条件:

scope :by_manufacturer, -> vehicle_manufacturer_id { where(:vehicle_manufacturer_id => vehicle_manufacturer_id) if vehicle_manufacturer_id.present? }

我现在无法测试它,但这应该可以。但是,我认为您的问题不是您是否调用范围。 URL 参数从您的 View 传递到您的 Controller 。范围仅确定在特定条件下返回哪些记录,它们没有说明应显示哪些 URL 参数。

关于ruby-on-rails - 带有 if 条件的 Rails has_scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22728236/

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