カクカクしかじか

技術的なアレコレ

ActiveHashってscope使えるのか...

概要

ActiveHashでもscopeが使えるの知らんかった...
そういう話です🙈

class Band < ActiveHash::Base
  self.data = [
    { name: 'Nirvana', category:'Grunge' },
    { name: 'Dinosaur Jr.', category:'Grunge' },
    { name: 'Sonic Youth', category:'Grunge' },
    { name: 'Radiohead', category: 'Post-rock' },
    { name: 'Mogwai', category: 'Post-rock' },
    { name: 'Sigur Rós', category: 'Post-rock' }
  ]
  scope :grunge, -> { where(category: 'Grunge') }
  scope :post_rock, -> { where(category: 'Post-rock') }
end
$ Band.grunge.to_a
=> [#<Band:0x00007f842c462118 @attributes={:name=>"Nirvana", :category=>"Grunge", :id=>1}>,
 #<Band:0x00007f842c461ce0 @attributes={:name=>"Dinosaur Jr.", :category=>"Grunge", :id=>2}>,
 #<Band:0x00007f842c461510 @attributes={:name=>"Sonic Youth", :category=>"Grunge", :id=>3}>]

$ Band.post_rock.to_a
=> [#<Band:0x00007f842c460db8 @attributes={:name=>"Radiohead", :category=>"Post-rock", :id=>4}>,
 #<Band:0x00007f842c4605e8 @attributes={:name=>"Mogwai", :category=>"Post-rock", :id=>5}>,
 #<Band:0x00007f84102cbf50 @attributes={:name=>"Sigur Rós", :category=>"Post-rock", :id=>6}>]