Tuesday, 15 April 2014

mysql - Rails 3.2 - ActiveRecord `where` query with method called on attribute -



mysql - Rails 3.2 - ActiveRecord `where` query with method called on attribute -

in console can query job table this: jobs = job.where("created_at <= ?", time.now)

i want jobs created year. if individual job can utilize job.created_at.year if seek utilize jobs = job.where("created_at.year = ?", 2014) next error:

sqlite3::sqlexception: no such column: created_at.year

i think understand problem i'm trying mix ruby sql query i'm not sure how around it. understanding help me create much more powerful activerecord queries.

edit found can using .map so: job.all.map { |j| j if j.created_at.year == 2014 }. best way if want gather collection of jobs requires calling method on attribute?

try this:

job.where(:created_at => time.now.beginning_of_year..time.now.end_of_year)

since, calling time.now potentially give 2 different years (before , after midnight on dec 31) improve first create variable current time before used in query:

current_time = time.now job.where(:created_at => current_time.beginning_of_year..current_time.end_of_year)

mysql ruby-on-rails ruby database activerecord

No comments:

Post a Comment