代码之家  ›  专栏  ›  技术社区  ›  Will

没有参数的作用域,具有ransack形式

  •  0
  • Will  · 技术社区  · 5 年前

    我想在我的ransack表单中有一个复选框,选择使用类方法或范围。作用域没有参数。

    #model
    def self.new
        where.not(sku: retailer.products.pluck(:sku).uniq)
    end
    
    # view
    <%= f.check_box :new, class: 'mr-sm-2 ' %>
    

    但我有个错误:

    如何将表单元素添加到搜索表单以选择使用范围?

    0 回复  |  直到 5 年前
        1
  •  0
  •   monteguy    5 年前

    你需要把作用域列入白名单。在模型中创建一个名为 ransackable_scopes

    def self.ransackable_scopes(auth_object = nil)
      [:new]
    end
    

    作为补充说明,我建议不要命名您的范围 new . 虽然在这种情况下技术上可行, 新的 是在Ruby中调用类构造函数的方式。所以定义一个名为 新的