Я немного почесал голову над этим, и хотя я уверен, что это глупая ошибка, я дошел до того, что должен проконсультироваться с СО, если я хочу сохранить оставшиеся волосяные фолликулы.
Я написал функцию в Rails (3.1.2), которая должна возвращать массив, заполненный объектами модели ActiveRecord (в данном случае пользователями), которые соответствуют определенному критерию.Критерий заключается в том, что текущий список пользователя (обозначаемый полем active_list_id) не должен быть равен нулю.Код выглядит следующим образом:
def build_list_array
@lists = Array.new
User.all.each do |user|
@active_list_id = user.active_list_id
@lists<< List.find(@active_list_id) if @active_list_id != nil #TODO WHAT?!? WHY IS THIS RETURNING USERS?
end
end
Как видите, я инициализирую пустой массив, циклически перебираю всех пользователей и добавляю их активный список в массив, если соответствующая ссылка на запись пользователя не равна нулю.Проблема в том, что возвращаются пользовательские объекты, а не списочные объекты.
Вот ассоциации пользователей и моделей списков:
user model:
has_many :lists
has_many :tasks
list model:
belongs_to :user
Краткое слово о ссылке на active_list: AПользователь может иметь много списков, но только один активен в любое время.Поэтому мне нужно сослаться на этот список в записи пользователя.Таким образом, активный список не является внешним ключом в обычном смысле этого слова.
Я ценю любую помощь, которую вы можете мне оказать ... Спасибо =)