0

我有两个模型,消息和用户。Message 有两个 User 对象,user_1 和 user_2。

class Message < ActiveRecord::Base
  attr_accessible :user_1, :user_2

  belongs_to :user_1, :class_name => "User"
  belongs_to :user_2, :class_name => "User"
end

class User < ActiveRecord::Base
  attr_accessible :email, :password

  has_many :message, dependent: :destroy, :finder_sql => 'SELECT * FROM messages where (user_1_id = #{id} or user_2_id = #{id})'
end

当我尝试删除 User 对象时,出现以下错误:

用户控制器中的 ActiveRecord::StatementInvalid#destroy

SQLite3::SQLException:无法识别的令牌:“#”:SELECT * FROM messages where (user_1_id = #{id} or user_2_id = #{id})

错误消息看起来很简单,但我认为 # 是正确的语法。我正在使用 Rails 3.2.3。谢谢!

4

1 回答 1

3

在 ruby​​ 中,单引号内的所有内容除了\\and\'都按字面意思对待。

您必须在 SQL 语句中使用双引号。

于 2012-05-16T13:55:51.450 回答