我想创建命名空间模型,例如:
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
如何实例化此模型?
你只能叫new
上class
上课,你已经嵌套在AAA::AAA
你的内部类AAA
模块。您需要调用AAA::AAA.new
或不将类包装在模块中。即使您创建AAA
顶级类而不是模块,您仍然可以嵌套AAA::BBB
在其中。看起来像这样:
class AAA < ActiveRecord::Base
class BBB < ActiveRecord::Base
end
end
然后,您可以同时拨打AAA.new
和AAA::BBB.new
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句