只是想知道在Rails中定义命名空间模型的正确方法是什么。我已经看到它以两种方式定义。在大多数图书馆中,它们似乎都被定义为
module Fruit
class Banana < ActiveRecord::Base
...
end
end
而Rails生成器似乎更喜欢这个
class Fruit::Banana < ActiveRecord::Base
...
end
它们显然都有效但有什么区别?哪个更受欢迎?谢谢!
答案 0 :(得分:1)
它们不完全相同,实际定义模块的方式越详细,而较短的方式则预期它已被定义。
class Fruit::Banana; end
这将抛出NameError
。但是,如果你这样做
module Fruit; end
class Fruit::Banana; end
它不会抛出错误。
答案 1 :(得分:0)
它们是相同的,但“更长”版本允许您向模块添加其他内容。 我更喜欢这样,因为我经常将多个小东西打包成一个模块。
答案 2 :(得分:-1)
它们是相同的,其次只是语法糖。