如何为数组创建范围?

时间:2017-03-01 01:46:01

标签: ruby-on-rails ruby model

以下代码给出了一个空范围。 Category_ids是一系列类别。

scope :art, ->{ where(:category_ids => '1') }

如何检查阵列中是否存在其中一个类别?

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

  1. 获取类别
  2. 更正您的查询位置
  3. 示例:

    has_many :categories
    scope :art, -> { required = [Category.first]; where(categories: required) }
    

    我认为在您的模型中,您有categories关联。在这种情况下,您可以在where查询中使用categories: requiredrequired应设置为您想要的类别数组

答案 2 :(得分:0)

你说category_ids是一个类别数组(我假设是类别id)。您是否尝试使用该阵列中的类别ID返回所有记录?如果是这样,你正在寻找:

scope :art, -> { where (:category_id => category_ids) }

或者使用新的ruby语法:

scope :art, -> { where(category_id: category_ids) }

如果我误解了你并且你正在寻找类别ID为1的任何记录,那么你正在寻找:

scope :art, -> { where(category_id: '1') }