Rails 3 использует Arel
или реляционную алгебру для извлечения ассоциаций. Предполагая, что ваша EventType
модель связана с has_many :time_units
, вы можете просто сделать следующее:
@event_type_time_units = @event.event_type.time_units
Кроме того, вы можете оптимизировать свои запросы, используя EventType
в качестве модели объединения (ish):
# app/models/event.rb
belongs_to :event_type
has_many :time_units, :through => :event_type
# app/models/event_type.rb
has_many :events
has_many :time_units
Теперь вы можете делать запросы напрямую, сохраняя вызов SQL:
@event_time_units = @event.time_units
Короче говоря, нет причин делать поиск в ассоциации. Ассоциация возвращает «Массив» записей. (Я использую «Массив» в кавычках, потому что это не на самом деле массив, а ActiveRecord::Association
, который ведет себя как массив)
Помимо
Я настоятельно рекомендую просто перейти на Rails 3.1.3. Переход с Rails 2 -> 3 так же сложно, как и 3 => 3.1. Избавь себя от головной боли. На самом деле, учитывая наследие вашего приложения, я рекомендую следующее:
- Создание нового пустого приложения Rails 3.1.3
- Скопируйте все ваши модели, представления, контроллеры и библиотеки в это новое приложение
- Поиск ваших существующих проектов для драгоценных камней -> добавить их в свой
Gemfile
- Просмотрите все в
config/*
. Это где много изменений произошло. Если в вашем существующем приложении есть код для конкретного приложения, перенесите его на новое. В противном случае, оставьте это в покое.