0

看法:

<% Favorite.find_by_sql("SELECT p.* FROM favorites as f LEFT JOIN posts as p ON p.user_id = f.user_id WHERE f.user_id = ? limit 15", @user.id).reverse.each do |post| %>

我收到以下错误:

Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? limit 15' at line 1: SELECT p.* FROM favorites as f LEFT JOIN posts as p ON p.user_id = f.user_id WHERE f.user_id = ? limit 15

我基本上想要的是获得我喜欢的帖子

4

1 回答 1

1

尝试

<% Favorite.find_by_sql(["SELECT p.* FROM favorites as f LEFT JOIN posts as p ON p.user_id = f.user_id WHERE f.user_id = ? limit 15", @user.id]).reverse.each do |post| %>

需要将查询及其参数作为数组发送,以使参数替换发生。

您是否知道这种方法已被弃用,而不是与 db 无关,因此绝对是最后的手段和维护的噩梦。

应该是您模型上的一种方法来执行此操作,将 sql 放在视图中不仅会脱轨,而且是灾难性的火车事故。

于 2012-09-20T22:57:46.273 回答