引数の数が間違っています(3が与えられ、1..2が期待されます)

Aug 24 2020

Rails 6は初めてですが、上記のエラーが発生します。以下のコードをチェックして、これから抜け出すのを手伝ってください。ありがとう!

has_many :coaches, ->{where('max_unit > 0 and active = 1').order('trim(full_name)')}, ->{select((Account.column_names - ['photo_file']).map { |column_name| "`accounts`.`#{column_name}`"})}, :through => :qualifications

バックトレース:ArgumentError(引数の数が間違っています(3が与えられ、1..2が期待されます)):

app / models / language.rb:9:<class:Language>' app/models/language.rb:1:in in'app / models / account.rb:142:in manage_substitutions' app/controllers/extranet/homes_controller.rb:11:in index '

回答

1 maxpleaner Aug 24 2020 at 11:40

ここでは、2つのラムダを別々の引数として指定しています。

最初は

->{where('max_unit > 0 and active = 1').order('trim(full_name)')}`

2番目は

->{select((Account.column_names - ['photo_file']).map { |column_name| "`accounts`.`#{column_name}`"})}

これは無効です。2つのラムダを1つに組み合わせる必要があります。

-> {
  where('max_unit > 0 and active = 1').
  order('trim(full_name)').
  select((Account.column_names - ['photo_file']).map { |column_name| "`accounts`.`#{column_name}`"})
}

これもチェックする必要があります。これを行うには、よりクリーンな方法になる可能性があります。 https://stackoverflow.com/a/33939206/2981429