Несколько других способов реализации вашего примера в стиле ActiveRecord (Theater.get_showtimes(theater_id)
):
Theater.find(theater_id).showtimes
вместо. Предполагается, что вы использовали ассоциации ActiveRecord, как упоминает zsalzbank.
Showtimes.find_by_theater_id(theater_id)
Я бы посоветовал вам использовать возможности ActiveRecord для достижения наилучших результатов, а не беспокоиться об искусственном ограничении себя тем, что могут возвращать методы класса.
Теперь, если мы говорим исключительно о теории, я бы поспорил о соблюдении соглашений языка и / или структуры, которую вы используете.
Глядя на ActiveRecord::Base
(http://apidock.com/rails/ActiveRecord/Base), тривиально найти группу методов класса, которые возвращают что-то не ActiveRecord::Base
. Например, ActiveRecord::Base.connection
возвращает подкласс ActiveRecord::ConnectionAdapters::AbstractAdapter
, а ActiveRecord::Base.table_name
возвращает String
. Очевидно, что ваша модель также имеет эти методы, поэтому она возвращает эти значения.
Я не вижу никакой пользы от наложения предложенного ограничения на себя / свой код - тем более что вы уже нарушили правило, унаследовав от ActiveRecord::Base
и в любом случае придется иметь дело с различными классами возврата.