Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 3rd, 2012  |  syntax: None  |  size: 0.63 KB  |  hits: 19  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Active Record: Use hash conditions in on clause
  2. ... left join works on clients.id = works.client_id and works.performed_on >= '2012-01-21' and works.performed_on <= '2012-01-28'...
  3.        
  4. where(:performed_on => (date1..date2))
  5.        
  6. Client.joins('left join works').on('clients.id' => 'works.client_id', 'works.performed_on' => (date1..date2))
  7.        
  8. Client.joins(:works).where(:works => {:performed_on => (date1..date2)})
  9.        
  10. join_sql = Client.send(:sanitize_sql_for_conditions, [
  11.    "LEFT JOIN works ON clients.id = works.client_id AND (
  12.       works.performed_on >= ? AND works.performed_on <= ? )",
  13.    date1, date2])
  14.  
  15. Client.joins(join_sql)