Вам следует взглянуть на справочную документацию . Это хорошо объяснено.
В вашем случае, я думаю, вы не можете использовать между, потому что вам нужно передать два параметра
Между - findByStartDateBetween… где x.startDate между? 1 и? 2
В вашем случае используйте комбинацию LessThan
или LessThanEqual
с GreaterThan
или GreaterThanEqual
LessThan - findByEndLessThan… где x.start < ? 1
LessThanEqual findByEndLessThanEqual… где x.start < =? 1
GreaterThan - findByStartGreaterThan… где x.end>? 1
GreaterThanEqual - findByStartGreaterThanEqual… где x.end> =? 1
Вы можете использовать оператор And
и Or
объединить оба.
Во-первых, вы должны поместить все методы хранения и сбора данных в ресурсы и модели, чтобы они были доступны со всех контроллеров. Тем не менее, вы можете сохранить внутренние операции изменения данных в ваших индивидуальных контроллерах. Как только вы его организовали вот так, вы можете делать то же, что делает Hobo: создать контроллер только для первой страницы, «front_controller», если хотите. Здесь вы можете отобразить данные, собранные из всех ваших моделей и ресурсов, а также ссылки на другие действия вашего контроллера.
Это несколько интересных мыслей о лучшей организации ваших моделей и контроллеров ( толстые модели, худые контроллеры - это практическое правило. Поскольку вы сказали, что используете другие API (например, lastfm и twitter), возможно, вы захотите взглянуть на this railscasts о создании моделей без ActiveRecord (моделей, которые не привязаны к базе данных)
здесь это какой-то псевдокод, имейте в виду, что он действительно нацелен только на ваш вопрос.
# pseudo code
class TwitterController < ApplicationController
def index
@services = {
:twitter => TwitterModel.find(:all, ...),
}
end
def update_twitter
TwitterUpdaterClass.update { |twit|
_m = TwitterModel.new
_m.message = twit.msg
_m.from = twit.from
# ..
_m.save
}
end
end
class MyIndexController < ApplicationController
def index
@services = {
:twitter => TwitterModel.find(:all, ...),
:lastfm => LastFmModel.find(:all, ...)
}
end
end
это может быть намного лучше , чтобы фоновые рабочие обновляли ваши rest-сервисы вместо контроллера, который вам нужно вызывать каждый раз вы хотите получить последние твиты. вот хорошая статья, показывающая - 6 способов запускать фоновые задания в rubyonrails
# more pseudo code
class TwitterWorker < BackgrounDRb::MetaWorker
set_worker_name :twitter_worker
def create(args = nil) # instead of TwitterController.update_twitter
TwitterUpdaterClass.update { |twit|
_m = TwitterModel.new
_m.message = twit.msg
_m.from = twit.from
# ..
_m.save
}
end
end
Во-первых, вы должны поместить все методы хранения и сбора данных в ресурсы и модели, чтобы они были доступны со всех контроллеров. Тем не менее, вы можете сохранить внутренние операции изменения данных в ваших индивидуальных контроллерах. Как только вы его организовали вот так, вы можете делать то же, что делает Hobo: создать контроллер только для первой страницы, «front_controller», если хотите. Здесь вы можете отобразить данные, собранные со всех ваших моделей и ресурсов, а также ссылки на другие действия вашего контроллера.
Думаю, вам стоит немного прочитать о рельсах MVC-архитектуры .
Мне кажется, что вы пренебрегаете частью М (одель). Модели должны содержать данные, таким образом, являясь наиболее важной частью вашего приложения.
Это несколько интересных мыслей о лучшей организации ваших моделей и контроллеров ( толстых моделей, худых контроллеры - это эмпирическое правило.
Поскольку вы сказали, что используете другие API (например, lastfm и twitter), вы можете ознакомиться в этом обзоре о создании моделей без ActiveRecord ( модели, не привязанные к базе данных)
Если вы также предоставляете API для своих пользователей, я предлагаю использовать подход RESTful, так как его действительно легко разрабатывать и поддерживать, как только вы освоите его.
Вам следует узнать больше о ресурсах , поскольку ваши localhost / lastfm
и localhost / twitter
являются ресурсами, а не представлениями. 1279] Надеюсь, это поможет. Удачи