numero errato di argomenti (dato 3, atteso 1..2)

Aug 24 2020

Sono nuovo su Rails 6 e sto ricevendo un errore sopra. Per favore controlla il codice qui sotto e aiutami a uscire da questo. Grazie!

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

backtrace: ArgumentError (numero errato di argomenti (dati 3, previsti 1..2)):

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

Risposte

1 maxpleaner Aug 24 2020 at 11:40

Stai dando due lambda come argomenti separati qui.

Il primo è

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

Il secondo è

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

Questo non è valido. Dovresti combinare i due lambda in uno:

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

Dovresti anche controllare questo, è un modo potenzialmente più pulito per farlo:https://stackoverflow.com/a/33939206/2981429