Ruby 参数数量错误(给定3,应为1..2)

Ruby 参数数量错误(给定3,应为1..2),ruby,ruby-on-rails-6,Ruby,Ruby On Rails 6,我是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}`"})

我是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:in
'app/models/language.rb:1:in
' app/models/account.rb:142:in
manage\u substitutions'app/controllers/extranet/homes\u controller.rb:11:in
index'


您在这里给出了两个lambda作为单独的参数

首先是

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

->{select((Account.column_names - ['photo_file']).map { |column_name| "`accounts`.`#{column_name}`"})}
这是无效的。您应该将两个lambda合并为一个:

-> {
  where('max_unit > 0 and active = 1').
  order('trim(full_name)').
  select((Account.column_names - ['photo_file']).map { |column_name| "`accounts`.`#{column_name}`"})
}
您还应该检查一下,这是一种可能更干净的方法: