неправильное количество аргументов (дано 3, ожидается 1..2)
Я новичок в 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
backtrace:ArgumentError (неправильное количество аргументов (дано 3, ожидается 1..2)):
приложение / модели / язык.rb:9: в
<class:Language>' app/models/language.rb:1:in
' app/models/account.rb:142:inmanage_substitutions' app/controllers/extranet/homes_controller.rb:11:in
индекс'
1 ответ
Решение
Здесь вы даете две лямбды как отдельные аргументы.
Первый - это
->{where('max_unit > 0 and active = 1').order('trim(full_name)')}`
Второй
->{select((Account.column_names - ['photo_file']).map { |column_name| "`accounts`.`#{column_name}`"})}
Это неверно. Вам следует объединить две лямбды в одну:
-> {
where('max_unit > 0 and active = 1').
order('trim(full_name)').
select((Account.column_names - ['photo_file']).map { |column_name| "`accounts`.`#{column_name}`"})
}
Вы также должны проверить это, это потенциально более чистый способ сделать это: /questions/22874563/kak-peredat-argument-v-oblast-assotsiatsii-hasmany-v-rails-4/22874576#22874576