Я новичок в ROR и пытаюсь преобразовать свое приложение PhP в приложение ROR. Существует один php-файл common.php, который включен почти во все остальные файлы. Точно так же common.php использует RPCClient.php и User.php. Переменные и методы являются общими для файлов php. Итак, что я должен использовать в ROR класс или модуль, поскольку данные распределяются между различными файлами.
В 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
Это. Это довольно распространенная модель, это просто пространство имен организации.
Как и многие объектно-ориентированные языки, особенно Болтовня-производные, вы хотите прочитать о объектно-ориентированные шаблоны проектирования чтобы увидеть, как правильно структурировать вещи.
Других решений пока нет …