Что использовать: класс или модуль, в ROR

Я новичок в ROR и пытаюсь преобразовать свое приложение PhP в приложение ROR. Существует один php-файл common.php, который включен почти во все остальные файлы. Точно так же common.php использует RPCClient.php и User.php. Переменные и методы являются общими для файлов php. Итак, что я должен использовать в ROR класс или модуль, поскольку данные распределяются между различными файлами.

2

Решение

В Ruby вы захотите организовать вещи в пространства имен, и лучший способ сделать это — через объявления классов и модулей.

Как правило, class это то, что вы сделать пример, и module это то, что либо «смешано» (например, набор методов, импортированных другими модулями или классами), либо используется напрямую.

Например:

class User < ActiveRecord::Base
end

Вот Users это класс, потому что вы Создайте пользователи, и каждый пользователь представлен объектом.

Вы также можете объявить методы как «mixins» или как включаемые модули:

module UserPermissions
def can_delete_post?(post)
post.user_id == self.id
end
end

class User < ActiveRecord::Base
include UserPermissions
end

Где сейчас user.can_delete_post? является допустимым методом, и этот метод выполняется в контексте данного пользовательского экземпляра.

Вы также можете создавать модули, которые представляют собой просто наборы методов, которые вы можете вызывать напрямую:

module AppConfig
def self.account_limit
1
end
end

AppConfig.account_limit
# => 1

Где вы можете вызвать этот метод напрямую, без необходимости include Это. Это довольно распространенная модель, это просто пространство имен организации.

Как и многие объектно-ориентированные языки, особенно Болтовня-производные, вы хотите прочитать о объектно-ориентированные шаблоны проектирования чтобы увидеть, как правильно структурировать вещи.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]