Я бы хотел извлечь логику из контроллеров куда-нибудь, чтобы она была более СУХОЙ. Как лучше всего обрабатывать что-то вроде следующего в Rails?
Например, в отличие от наличия запроса в контроллерах, я мог бы поместить его в модель:
class SmoothieBlender < ActiveRecord::Base
belongs_to :user
def self.get_blenders_for_user(user)
self.where(["user_id = ?", user.id])
end
end
Или было бы лучше создать модуль в качестве сервисного уровня и включить его в каждую модель, которая его использует?
module BlenderUser
def get_blenders_for_user(user)
SmoothieBlender.where(["user_id = ?", user.id])
end
end
class SmoothieBlender < ActiveRecord::Base
include BlenderUser
belongs_to :user
end
class User < ActiveRecord::Base
include BlenderUser
has_many :smoothie_blenders
end
Или просто сделать его полноценным сервисным классом, доступным из контроллера пользователя и Blender? Куда бы вы положили этот класс?
class BlenderService
def self.get_blenders_for_user(user)
SmoothieBlender.where(["user_id = ?", user.id])
end
end
Я новичок в Ruby и Rails, поэтому, если это глупый вопрос / синтаксис неверен, прости меня. Заранее спасибо!