ruby-on-rails - rails模型的条件类继承

标签 ruby-on-rails class inheritance model

我有一个 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/

相关文章:

ruby-on-rails - 如何替换与另一个数组匹配的数组中的重复元素?

ruby-on-rails - 断言 Redis 发布

c++ - 创建一个带有静态成员容器的类,其中包含该类的所有实例?

python - 类 foo 、类 foo() 和类 foo(object) 之间的区别?

c++ - 在所有子 header 中包含基本 header 的问题

ruby-on-rails - 在 Ubuntu 11.04 上设置 Ruby on Rails

C++ 组合从 istream 获得的类对象

c++ - 为什么 (false?A() :B()). test() 只有 A 和 B 有子类关系时才能编译?

inheritance - Scala:如何继承 "static slot"?

ruby-on-rails - 为什么参数带点的路由匹配失败?