我有一个 Multi-Tenancy Rails 应用程序正在运行。
我希望范围为当前租户的模型(如这里的本文模型)继承租户范围模型,如下所示
class Article < TenantScoped
end
这很好用。我只接收范围为当前租户的对象。
但现在我创建了一个管理界面,我希望能够向所有租户添加文章。但是我的管理界面充当租户,并且模型的范围是它。
最后没有显示任何条目。
我建议对此的最佳解决方案是有条件地从租户范围模型中继承,如下所示
class Article
unless SudoTenant.current?
< TenantScoped
else
< ActiveRecord::Base
end
end
我一直在寻找 ruby 类的条件继承,但还没有找到任何东西。我的语法在这里是错误的,或者这甚至可能吗?
提前致谢
最佳答案
您可以使用 block 语法定义类:
if SudoTenant.current?
Article = Class.new(ActiveRecord::Base) do
# your code
end
else
Article = Class.new(TenantScoped) do
# your code
end
end
我强烈建议使用 mixins 而不是条件继承,它更干净、更清晰、更明显。
关于ruby-on-rails - rails模型的条件类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8611965/