Ruby on rails 具有join的作用域使SQL安全

Ruby on rails 具有join的作用域使SQL安全,ruby-on-rails,sql-injection,rails-activerecord,Ruby On Rails,Sql Injection,Rails Activerecord,我可以返回用户也可以访问的项目列表。他们要么在参与者名单上,要么拥有所列项目。查询工作正常,但不是SQL安全的。我想不出如何保证连接的安全性。where子句是安全的,但对join尝试相同的操作无效。我似乎在这里找不到文档或答案。我猜我错过了一些基本的东西 scope :manageable_by_user, lambda { |user| joins("LEFT JOIN participants ON participants.project_id = project

我可以返回用户也可以访问的项目列表。他们要么在参与者名单上,要么拥有所列项目。查询工作正常,但不是SQL安全的。我想不出如何保证连接的安全性。where子句是安全的,但对join尝试相同的操作无效。我似乎在这里找不到文档或答案。我猜我错过了一些基本的东西

scope :manageable_by_user, lambda { |user| 
  joins("LEFT JOIN participants ON 
         participants.project_id = projects.id 
         AND participants.user_id = #{user.id}").
  where("projects.user_id = ? OR projects.user_id IS NOT NULL",user.id)
}

使用
ActiveRecord::Base.sanitize(字符串)

这很有效。虽然synax对我来说有点笨拙。如果有一种方法可以使用,您会更愿意吗?比如在where语句中。不管是谁,如果没有人想出更好的答案,我会接受这个答案,因为它是有效的。嗯,既然你在一个范围内,我想你可以使用
sanitize