Я изо всех сил стараюсь найти лучший способ реализовать следующий класс в приложении Rails 4. Мне нужно использовать этот класс только в одном контроллере, и он очень длинный.Rails 4 helper class
class Yelp
##
# Performs query on Yelp Search or Business API
##
def query(business, term = 'lunch', cuisine = 'restaurants', limit = restaurant_limit, location = get_city)
# ..
end
##
# Extracts a list of cuisines formatted for the view
# @param array of restaurant objects
# @return hash of cuisines
##
def get_cuisines(restaurants)
# ..
end
##
# Creates [non-ActiveRecord] model objects from an array of restaurant data
# @param array of hashes containing restaurant data
# @return array of objects containing restaurant data
##
def parse_restaurants(restaurants)
# ..
end
##
# Creates Gmaps pins from restaurant objects
# @param array of restaurant objects to become pins
# @return Gmaps pins
##
def get_pins(restaurants)
# ..
end
end
Я изучил вспомогательные модули, но я понимаю, что они предназначены для логики представления.
Я не решаюсь поставить эту логику в мой application_controller.rb
, потому что, как я уже сказал, я использую ее только в одном из своих контроллеров.
Я пробовал поместить этот класс в каталог lib
, но не имел успеха. Я следовал this SO post, но я продолжаю получать: undefined method 'my_method' for <MainController>
.
Вы пробовали включить модуль в контроллер? – dandlezzz
Я не уверен, что понимаю, в чем проблема. Почему вы пытаетесь добавить его в контроллер вообще? Вы можете использовать экземпляр класса, не смешивая его ни с чем. –
Не делайте ваш контроллер толстым, но вместо этого проверяйте его логику и подумайте об использовании [services] (http://brewhouse.io/blog/2014/04/30/gourmet-service-objects.html) – blelump