def self.find(selector, hash={})
hash[:join] ||= ""
hash[:conditions] ||= ""
sql = ["SELECT * FROM books"]
hash[:joins].each do |join_table|
sql << "LEFT OUTER JOIN #{join_table} ON"
sql << "self.#{join_table.to_s.chop}_id"
sql << "= #{join_table}.id"
end
sql << "where #{hash[:conditions]}" unless hash[:conditions].empty?
sql << "LIMIT 1" if selector == :first
end
connection.find(sql.join(""))
end
这段代码关键是下面这一句:
sql << "LEFT OUTER JOIN #{join_table} ON"
上面这行代码是不是写错了。joins
貌似应该是调用的 SQL 的内连接才对呀?而这里却使用了 SQL 的左外连接,
我觉得是不是应该改为:
sql << "INNER JOIN #{join_table} ON"
才符合joins
的真实含意?