Search code examples
rubyhanamihanami-model

Join query in Hanami-model


Is it possible to create join query in subclass of Hanami::Repository?

I found that this pull request implements this feature but I can't find it in current codebase.


Solution

  • Hanami model based on rom, that's why you can use Relation#join method with a needful relation.

    For this you need to call join method for one relation and set other relation as an attribute:

    class PostRepository < Hanami::Repository
      associations do
        has_many :comments
      end
    
      # ...
    
      def join_example(date_range)
        posts    # => posts relation
        comments # => comments relation
    
    
        posts
          .join(comments) # set relation object here
          .where(comments[:created_at].qualified => date_range)
          .as(Post).to_a
      end
    end
    

    And that's all.

    Some helpful links:

    1. rom-sql tests for left_join
    2. A real example