method

find_by_sql

find_by_sql(sql)
public

Works like find(:all), but requires a complete SQL string. Examples:

  Post.find_by_sql "SELECT p.*, c.author FROM posts p, comments c WHERE p.id = c.post_id"
  Post.find_by_sql ["SELECT * FROM posts WHERE author = ? AND created > ?", author_id, start_date]

2Notes

Space before the opening [

ndgiang84 · Jul 1, 20151 thank

In this example

Post.find_by_sql ["SELECT title FROM posts WHERE author = ? AND created > ?", author_id, start_date]

The array is a parameter, so a space is required before the opening [, which is equivalent to write like this

Post.find_by_sql(["SELECT title FROM posts WHERE author = ? AND created > ?", author_id, start_date])

Wrong number of arguments (2 for 1)

yozzz · Mar 19, 2015

If you get this error, wrap brackets with parentheses: Post.find_by_sql(["some query"])