如何创建命名空间模型?

杰森

我想创建命名空间模型,例如:

rails g model aaa
rails g model aaa/bbb
rails g model aaa/ccc

当我运行时rails g model aaa/bbb,Rails将自动生成:

module AAA
  def self.table_name_prefix
    'aaa_'
  end
end

AAA 也是一个模型,因此我需要将其放在模块中:

Module AAA
  def self.table_name_prefix
    'staff_'
  end

  class AAA < ActiveRecord::Base
  end
end

但这不起作用。当我跑步时AAA.new,Rails说:

NoMethodError: undefined method `new' for AAA:Module

如何实例化此模型?

克里斯蒂安

你只能叫newclass上课,你已经嵌套在AAA::AAA你的内部类AAA模块。您需要调用AAA::AAA.new或不将类包装在模块中。即使您创建AAA顶级类而不是模块,您仍然可以嵌套AAA::BBB在其中。看起来像这样:

class AAA < ActiveRecord::Base
  class BBB < ActiveRecord::Base
  end
end

然后,您可以同时拨打AAA.newAAA::BBB.new

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章