加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – rails 3.2具有可选参数的范围

发布时间:2020-12-17 02:43:56 所属栏目:百科 来源:网络整理
导读:我有以下范围来查找属于特定客户的产品. scope :client,lambda {|client| where("client_id = ?",client) } 并且可以被称为 Product.client(parameter) 如果没有给出客户ID,我有什么方法可以声明我的范围返回所有产品?这是不应该使用范围的情况吗? 解决方
我有以下范围来查找属于特定客户的产品.

scope :client,lambda {|client| where("client_id = ?",client) }

并且可以被称为

Product.client(parameter)

如果没有给出客户ID,我有什么方法可以声明我的范围返回所有产品?这是不应该使用范围的情况吗?

解决方法

您应该使用除范围之外的其他内容,因为您确实希望在两种情况之间切换(指定/不指定客户端ID)并以不同方式响应.这个怎么样:

class Product < ActiveRecord::Base
  def self.by_client(client)
    if client
      where(client_id: client)
    else
      all
    end
  end
end

此代码将始终返回类似于作用域输出的内容,因此您可以使用它进行链接等.

请注意,这也整理了代码,不需要特定的范围.并确保你实际上并不意味着拥有has_many:产品的客户端…

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读