add_to_serializer 块中无法使用对象

你好!我目前正在开发多语言插件,在 add_to_serializer 方法中,我希望通过提供一个 lambda 来使用 &block 参数,以避免代码冗余,并在其中传递参数。

    corresponding_translation =
      -> (object, scope, translated_field_type, uncategorized_field_name, default_object_used) {
        if object.uncategorized?
          I18n.t(uncategorized_field_name, locale: I18n.locale)
        elsif !(object.slug_path && Multilingual::Translation.get(translated_field_type, default_object_used)).blank?
          Multilingual::Translation.get(translated_field_type, default_object_used)[client_locale.call(scope).to_sym] || default_object_used
        else
          default_object_used
        end
      }

add_to_serializer(
      :basic_category,
      :name,
      false,
      &block = corresponding_translation.call(object, scope, "category_name", 'uncategorized', object.name)
    )

但是,当我尝试运行 Discourse 时,它无法启动,而是出现此错误,提示 object 是一个未定义的局部变量。但我希望使用 Discourse 变量而不是局部变量。

<path to discourse>/plugin/discourse-multilingual/plugin.rb:228:in `block in activate!': undefined local variable or method `object' for #<Plugin::Instance:0x00007f3629ad0cf8 @assets=[["<path to discourse>/plugins/discourse-multilingual/assets/stylesheets/common/multilingual.scss", nil, "discourse-multilingual"], ["<path to discourse>/plugins/discourse-multilingual/assets/stylesheets/mobile/multilingual.scss", :mobile, "discourse-multilingual"]], @path="<path to discourse>/plugins/discourse-multilingual/plugin.rb", @enabled_site_setting=:multilingual_enabled, @directory_name="discourse-multilingual", @extra_js_file_path="<path to discourse>/app/assets/javascripts/plugins/discourse-multilingual_extra.js.erb", @color_schemes=[], @javascripts=[], @locales=[], @service_workers=[], @styles=[], @metadata=#<Plugin::Metadata:0x00007f3624f752e0 @name="discourse-multilingual", @about="Features to support multilingual forums", @version="0.2.9", @url="https://github.com/paviliondev/discourse-multilingual", @authors="Angus McLeod, Robert Barrow", @contact_emails="development@pavilion.tech">, @seed_data={}, @asset_filters=[], @idx=0, @initializers=[#<Proc:0x00007f362564b4c0 <path to discourse>/plugins/discourse-multilingual/plugin.rb:28>]> (NameError)

当我删除它进行测试时,它说 scope 也是一个未定义的局部变量。

你有什么建议吗?提前谢谢!