2017-12-11 2 views
0

Ich habe eine join Aussage, die ich wie so schreibe:Schiene schließt sich Syntax

SomeTable.joins(<<-SQL) 
    INNER JOIN TableA as a 
      ON a.id = SomeTable.id 
    WHERE 
      a.user_id = #{user_id}  
    SQL 

Gibt es eine Möglichkeit, dies zu schreiben, wo #{user_id} parametriert? Oder muss ich eine andere Syntax verwenden?

Ich möchte SQL-Injection verhindern, indem sie so etwas wie .where(user_id: ?, user_id)

Antwort

0

tun Wie wäre:

SomeTable.joins(:table_a).where("user_id = ?", user_id) 

Unter der Annahme, dass Ihre Modelle sind:

class User < ApplicationRecord 
    has_many :table_as 
end 

class TableA < ApplicationRecord 
    belongs_to :user 
    has_many :some_tables 
end 

class SomeTable < ApplicationRecord 
    belongs_to :table_a 
end 
+0

haben Sie in der Lage Ihr Problem zu lösen, mit über Lösung? – s3tjan