Rails - поиск с помощью лучших практик? - PullRequest
1 голос
/ 04 апреля 2009

В рельсах я знаю, что лучше всего найти через область действия

например, in__controller

def index
  @event = Event.find(params[event_id])
  @question = @event.questions
end

но также полезно ли делать то же самое в действии шоу

def show
  @event = Event.find(params[:event_id])
  @question = @event.questions.find(params[:id])
end

или лучше просто сделать поиск прямо на модели Вопроса, не просматривая его через событие?

Мне любопытно узнать об этом, а также делать то же самое с @ question.comments.build vs Comment.new при создании новой записи без одновременного создания записи вопроса.

спасибо

Ответы [ 2 ]

1 голос
/ 05 апреля 2009

Что касается вашего первого вопроса, помните несколько вещей:

  • Что, если вам вдруг понадобится @event на ваш взгляд?
  • Что, если вы хотите расширить Event.find с помощью некоторой пользовательской логики (то есть контроля доступа)?
  • Есть ли причины , а не , чтобы использовать интерфейс событий?

Лично я хотел бы использовать интерфейс Event для извлечения вопросов, чтобы избежать преждевременной оптимизации.

Что касается вашего второго вопроса, @ question.comments.build автоматически установит правильные ссылки в вашей новой структуре, поэтому я буду делать это, пока доступен @question. (Черт, я бы даже подумал сделать метод @ question.add_comment (..) для класса Question).

Другими словами, преждевременная оптимизация - корень всего зла. И слабая связь хороша для вас.

1 голос
/ 04 апреля 2009

Если вы получаете событие только для того, чтобы получить вопрос, выполнение Event.find не нужно и требует дополнительной работы.

Оба написанных вами действия выполняют два запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...