【问题标题】:wrong number of arguments (given 3, expected 1..2)参数数量错误(给定 3,预期 1..2)
【发布时间】:2020-12-12 17:15:17
【问题描述】:

我是 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 <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'

【问题讨论】:

    标签: ruby ruby-on-rails-6


    【解决方案1】:

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

    第一个是

    ->{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}`"})
    }
    

    您还应该检查一下,这是一种可能更清洁的方法:https://stackoverflow.com/a/33939206/2981429

    【讨论】:

      猜你喜欢
      • 2018-12-02
      • 1970-01-01
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多