在Ruby on Rails中定义命名空间模型的正确方法

时间:2011-09-16 21:39:04

标签: ruby-on-rails namespaces

只是想知道在Rails中定义命名空间模型的正确方法是什么。我已经看到它以两种方式定义。在大多数图书馆中,它们似乎都被定义为

module Fruit
  class Banana < ActiveRecord::Base
     ...
  end
end

而Rails生成器似乎更喜欢这个

class Fruit::Banana < ActiveRecord::Base
  ...
end

它们显然都有效但有什么区别?哪个更受欢迎?谢谢!

3 个答案:

答案 0 :(得分:1)

它们不完全相同,实际定义模块的方式越详细,而较短的方式则预期它已被定义。

class Fruit::Banana; end

这将抛出NameError。但是,如果你这样做

module Fruit; end
class Fruit::Banana; end

它不会抛出错误。

答案 1 :(得分:0)

它们是相同的,但“更长”版本允许您向模块添加其他内容。 更喜欢这样,因为我经常将多个小东西打包成一个模块。

答案 2 :(得分:-1)

它们是相同的,其次只是语法糖。