結合する必要があるテーブルの配列があります。
tables = ["users","cars"]
しかし、私はこれらに結合しようとしています:
joins(:users,:cars)
コードが機能していません。私のモデルでは、テーブルを渡す定義があります。
def conditions(tables)
joins(tables.map { |t| t.to_sym }.join(","))
end
結合する必要があるテーブルの配列があります。
tables = ["users","cars"]
しかし、私はこれらに結合しようとしています:
joins(:users,:cars)
コードが機能していません。私のモデルでは、テーブルを渡す定義があります。
def conditions(tables)
joins(tables.map { |t| t.to_sym }.join(","))
end
このメソッドは、splat オペレーターに適しています。
.joins
未定義の数の引数を取るため、必要なのは配列を引数に分解する方法です。.join(",")
これは予期しない文字列になります。ただし、これは次joins(*tables.map(&:to_sym))
のとおりです。
あなたが書いたメソッドは string を渡している"users, cars"
ため、エラーが発生します。splat( *
) 演算子を使用します。
def conditions(tables)
joins *tables.map(&:to_sym)
end
http://endofline.wordpress.com/2011/01/21/the-strange-ruby-splat/