我有两个范围,在搜索框中使用by_group_title来返回基于用户搜索的组名。它工作正常,但是,我试图限制搜索结果中可以返回的组。具体来说,我试图排除任何拥有"会员资格的群体。 "受限制",我只希望在"会员资格"设置为"标准"为小组。
我的第二个范围叫做by_standard_membership。此范围将返回标准组,但不允许搜索。因此,我试图找到一种方法来组合两个范围,以便用户可以搜索组标题,但只显示标准组,并且限制组不会出现在搜索结果中。
我一直在使用"和"结合它们的声明,但似乎无法使它发挥作用。
#scopes
scope :by_group_title, -> (group) { where('title LIKE ?',"%#{group}%" ).order(created_at: :desc) if group.present? }
scope :by_standard_membership, -> { where(membership: "Standard").order(created_at: :desc) }
答案 0 :(得分:2)
有几种方法可以做到这一点。在下面的示例中,我已将条件(AND)someNum = 1
添加到您提供的表达式中。
您可以将AND
添加到where
子句...
scope :by_group_title, -> (group) { where('title LIKE ? and someNum = 1',"%#{group}%" ).order(created_at: :desc) if group.present? }
或使用ActiveRecord字段......
scope :by_standard_membership, -> { where(membership: "Standard", someNum: 1).order(created_at: :desc) }
或者,您可以将where
子句链接在一起......
scope :by_standard_membership, -> { where(membership: "Standard").where(someNum: 1).order(created_at: :desc) }