Мы пытаемся установить лучшие практики для проекта, и мы обсуждаем, где должны быть размещены методы SQL и ActiveRecord.Ruby on Rails Соглашения ActiveRecord
Я понимаю, что вы хотите сохранить как можно больше логики из контроллера. Я думаю, мы согласны с сложными SQL-запросами, принадлежащими моделям, но мы не согласны с тем, где должны существовать простые методы AR, будь то в контроллере или в модели.
Так что с чем-то упрощенно, как:
client = Client.find(10)
бы это в идеале жить в модели или контроллер? Я понимаю, что это может не сильно повлиять, и ответ будет неважен, но любое понимание вопроса было бы замечательным.
'client = Client.find (10)' - довольно простая операция и немного вне контекста, поэтому я бы сказал, что он может попасть в контроллер или модель в зависимости от того, почему это делается. Без каких-либо других указаний, я бы сказал, контроллер. Соглашение предназначено для того, чтобы контроллер и представления были легкими для кода, а код - в моделях (и просмотр кода помощи в помощниках), но это * соглашение * (не абсолютное правило), которое есть по какой-либо причине, что что много кода связано с сортировкой, сортировкой и обработкой данных, что связано с моделью. Контроллер может иметь * некоторый * код.:) – lurker
Это была дискуссия, которая вытекала из чтения этого из блога: «Сложные запросы (т. Е. Более сложные, чем простая находка), вообще говоря, вы никогда не должны использовать метод where или любые другие методы построения запросов как и за пределами самого класса модели ». Что я сейчас понимаю, он говорит, что находки можно использовать в контроллере, так что как насчет Client.where («first_name = 'Carly») Я предполагаю, что это должно быть вне контроллера? – CarlyL
Для 'Client.where (" first_name = 'Carly' ")', я бы все равно сказал * это зависит * (по контексту). :) – lurker