Правильный способ определения модели пространства имен в Ruby on Rails - PullRequest
0 голосов
/ 17 сентября 2011

Просто интересно, как правильно определить модель пространства имен в Rails.Я видел, что это определено двумя способами.В большинстве библиотек они, кажется, определены как таковые

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

, тогда как генератор Rails, кажется, предпочитает это

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

Они оба, очевидно, работают, но в чем разница?Что является предпочтительным?Спасибо!

Ответы [ 3 ]

1 голос
/ 14 июля 2013

Они не идентичны, более подробный способ фактически определит модуль, тогда как более короткий путь будет ожидать, что он уже будет определен.

class Fruit::Banana; end

Это бросит NameError. Однако, если вы делаете

module Fruit; end
class Fruit::Banana; end

не выдаст ошибку.

0 голосов
/ 17 сентября 2011

Они одинаковые, но «длинная» версия позволяет добавлять другие элементы в модуль. Я предпочитаю это, так как я часто упаковываю в модуль несколько маленьких вещей.

0 голосов
/ 17 сентября 2011

Они идентичны, второй просто синтаксис сахара.

...