Rails: Has many through associations — find with AND condition, not OR condition

前端 未结 3 475
盖世英雄少女心
盖世英雄少女心 2021-02-06 19:18

I have the following query method in my ActiveRecord model:

def self.tagged_with( string )
    array = string.split(\',\').map{ |s| s.lstrip }
    select(\'disti         


        
3条回答
  •  北荒
    北荒 (楼主)
    2021-02-06 20:04

    This should work:

    def self.tagged_with( string )
      array = string.split(',').map{ |s| s.lstrip }
      select('distinct photos.*').
        joins(:tags).
        where('tags.name' => array).
        group("photos.id").
        having("count(*) = #{array.size}")
    end
    

    Above will match photos that have tags red and blue at least. So that means if a photo has red, blue and green tags, that photo would match too.

提交回复
热议问题