Accessing results of retrieve where


I am searching for a record using "where":

@profile = Profile.where(: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?



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 =>

@profile = Profile.where(:user_id =>

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