下面是一个 SQL 查询,它获取一些与用户相关的数据。
def self.get_user_details(user_id)
result = Event.execute_sql("select replace(substring_index(properties, 'text', -1),'}','') as p, count(*) as count
from ahoy_events e where e.user_id = ?
group by p order by count desc limit 5", :user_id)
return result
end
我想动态地将值传递给用户 ID 以获得结果。 我正在使用下面的方法来清理 sql 数组,但它仍然没有返回结果。如果给定静态参数,查询可以正常工作。
def self.execute_sql(*sql_array)
connection.execute(send(:sanitize_sql_array, sql_array))
end
因为查询很复杂,我无法弄清楚 ActiveRecord 的方式来获取结果。 我有什么办法可以解决这个问题吗?
最佳答案
我不知道为什么这不起作用。可能 SQL-Syntac SELECT * FROM users ...
动态传递一些其他方式可以做到这一点:“some string #{user.id#ruby code} some more string”
您可以在 Activerecord 中执行如下查询:User.where(id: user.id).where(field2: value2).group_by(:somevalue).order(:id)
关于mysql - Rails sql查询中动态传递参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46982556/