Sha256: b322849b8687e3d327a8d893c093791ee1f08850cfd6ea08499e6e62cb2a2574
Contents?: true
Size: 1.41 KB
Versions: 1
Compression:
Stored size: 1.41 KB
Contents
require 'spec_helper' describe 'Array Column Predicates' do let!(:adapter) { ActiveRecord::Base.connection } before do adapter.create_table :arel_arrays, :force => true do |t| t.string :tags, :array => true t.integer :tag_ids, :array => true end class ArelArray < ActiveRecord::Base attr_accessible :tags end end after do adapter.drop_table :arel_arrays Object.send(:remove_const, :ArelArray) end describe 'Array Overlap' do it 'converts Arel array_overlap statment' do arel_table = ArelArray.arel_table arel_table.where(arel_table[:tags].array_overlap(['tag','tag 2'])).to_sql.should match /&& '\{"tag","tag 2"\}'/ end it 'converts Arel array_overlap statment' do arel_table = ArelArray.arel_table arel_table.where(arel_table[:tag_ids].array_overlap([1,2])).to_sql.should match /&& '\{1,2\}'/ end it 'returns matched records' do one = ArelArray.create!(:tags => ['one']) two = ArelArray.create!(:tags => ['two']) arel_table = ArelArray.arel_table ArelArray.where(arel_table[:tags].array_overlap(['one'])).should include(one) ArelArray.where(arel_table[:tags].array_overlap(['two'])).should include(two) ArelArray.where(arel_table[:tags].array_overlap(['two','one'])).should include(two) ArelArray.where(arel_table[:tags].array_overlap(['two','one'])).should include(one) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
postgres_ext-0.0.9 | spec/arel/array_spec.rb |