Ruby 参数数量错误(给定3,应为1..2)
我是Rails 6的新手,我正在克服这个错误。请检查下面的代码,并帮助我摆脱这个。谢谢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}`"})
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:inmanage\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}`"})
}
您还应该检查一下,这是一种可能更干净的方法: