Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails order based on association

I have a Problem and a Solution model. Problem has many solutions and Solution belongs to problem.

I need to get the recently solved problem, that means, get the last X solutions and get it's problem. I'm pretty sure there's a way to do this with named_scopes but I can't figure it out.

Any help is really appreciated :-)

Thanks,

Nicolás Hock I.

like image 423
Hock Avatar asked Dec 12 '22 18:12

Hock


2 Answers

I actually got the named_scope working:

named_scope :solved_recently, :joins => :solutions, :order => "solutions.created_at DESC"
# Problem.solved_recently

Thanks anyway @Jacob :)

like image 157
Hock Avatar answered Dec 26 '22 17:12

Hock


I think this should work:

x = #some number
solutions = Solution.find(:all, :order => ['created_at desc'], :limit => x)
problems  = solutions.map {|solution|
   solution.problem
}
like image 36
Jacob Relkin Avatar answered Dec 26 '22 18:12

Jacob Relkin