Squeel 導入したら ActiveRecord#select で死んだ
User.select(:first_name, :last_name)
みたいなことをしておった状態に squeel をいれたら
ArgumentError (wrong number of arguments (2 for 0..1))
と言われました。
コードをみたら引数一個しか取らない感じになってる。他はだいたい*args
なのに、なんでselect
だけこんな仕打ちを……。
def select(value = Proc.new) if block_given? && Proc === value if value.arity > 0 || (Squeel.sane_arity? && value.arity < 0) to_a.select {|*block_args| value.call(*block_args)} else relation = clone relation.select_values += Array.wrap(DSL.eval &value) relation end else super end end
どうしても squeel 使いたかったので下にあった where に習って *rest を加えましたが、ひどすぎる仕打ちなので俺がなにか間違っているのかもしれない。
require 'active_record' module Squeel module Adapters module ActiveRecord module RelationExtensions def select(value = Proc.new, *rest) if block_given? && Proc === value if value.arity > 0 || (Squeel.sane_arity? && value.arity < 0) to_a.select {|*block_args| value.call(*block_args)} else relation = clone relation.select_values += Array.wrap(DSL.eval &value) relation end else super end end end end end end