1

結合する必要があるテーブルの配列があります。

tables = ["users","cars"]

しかし、私はこれらに結合しようとしています:

joins(:users,:cars)

コードが機能していません。私のモデルでは、テーブルを渡す定義があります。

def conditions(tables)
    joins(tables.map { |t| t.to_sym }.join(","))
end
4

2 に答える 2

5

このメソッドは、splat オペレーターに適しています。

.joins未定義の数の引数を取るため、必要なのは配列を引数に分解する方法です。.join(",")これは予期しない文字列になります。ただし、これは次joins(*tables.map(&:to_sym))のとおりです。

于 2013-02-26T19:13:45.943 に答える
1

あなたが書いたメソッドは string を渡している"users, cars"ため、エラーが発生します。splat( *) 演算子を使用します。

def conditions(tables)
  joins *tables.map(&:to_sym)
end

http://endofline.wordpress.com/2011/01/21/the-strange-ruby-splat/

于 2013-02-26T19:13:53.613 に答える