【发布时间】:2020-09-02 02:10:47
【问题描述】:
我在我的多租户应用程序中使用 Active Admin。我还使用 Searchkick,它在每个模型中都有一个自定义租户特定索引:
class Budget < ApplicationRecord
multi_tenant :company
searchkick inheritance: true,index_name: -> { [MultiTenant.current_tenant.tenant_name, model_name.plural, Rails.env].join('_') }
end
问题在于,在 AA 中,此逻辑失败,因为设置了租户。我希望能够在更新记录时在 AA 中进行设置。
例如,我将更新 http://localhost:4000/admin/budgets/dt2kqvgm 其中dt2kqvgm 是记录的友好 ID。所以我想这样称呼:
MultiTenant.current_tenant = Budget.friendly.find(params['budget']['company_id'])
当我创建/更新记录等时
目前我得到:
undefined method `tenant_name' for nil:NilClass
因为在我的应用程序控制器中,租户是根据用户身份验证来设置当前公司等范围的。在 AA 中,我希望/需要根据您似乎无法从 AA 控制器逻辑访问的参数进行设置.我的参数在 AA 中是这样的:
{"utf8"=>"✓", "_method"=>"patch", "authenticity_token"=>"PrhNGnPvV1Qfb5RCwTVv4Wwz9tjf9SFy2VWDcyJXoFLytM8y5ZAyF7h8I7xa+fy01E9Fc/v2CvR52I4/LKOLHQ==", "budget"=>{"company_id"=>"9", "name"=>"qweqwe", "description"=>"qweqwe", "notes"=>"qwee", "flag_active"=>"1", "slug"=>"dt2kqvgm", "title"=>"qweqwe"}, "commit"=>"Update Budget", "controller"=>"admin/budgets", "action"=>"update", "id"=>"dt2kqvgm"}
【问题讨论】:
-
应该是
permitted_params? -
当这个中断并且我在代码中回滚时,似乎参数在 AA 控制器中甚至不可用。
-
permitted_params应该可用。我建议添加一个pry断点并四处寻找。你可以看到permitted_params被读取here
标签: activeadmin searchkick acts-as-tenant