Accessing results of retrieve where

Hi,

I am searching for a record using "where":

@profile = Profile.where(:user_id => current_user.id)

This returns: => [#<Profile id: 6, user_id: 19, last_subject_id: 6, last_book_id: 2, last_chapter_id: 1, last_section_id: 1, last_subsection_id: 1, last_minisection_id: 20, about: nil, image: nil, created_at: "2013-03-13 01:45:44", updated_at: "2014-01-30 02:11:54", students_last_subject_id: 6, students_last_book_id: nil, students_last_chapter_id: nil>]

I am trying to then access "students_last_subject_id" using several methods including @profile.students_last_subject_id, but it keeps returning nil. With the enclosing brackets i am guessing this is not a hash..

Can anyone help?

Thanks,

Dave

Nope. where returns an array containing all the records it finds, even if it's only one. If you know, or at least are pretty sure, your search will only give one row object, you can use find_by, or just pull the first element from the where's array:

@profile = Profile.find_by(:user_id => current_user.id)

@profile = Profile.where(:user_id => current_user.id).first

Also, assuming you have setup your relationships correctly (so profile belongs_to user, user has_many profiles) then you should be able to do @profile = current_user.profiles.first or if you have user has_one profile then @profile = current_user.profile

Colin