在rails sql查询中动态传递参数

时间:2017-10-27 20:00:04

标签: mysql ruby-on-rails ruby-on-rails-3

下面是一个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获取结果的方法。 有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我不知道为什么不行。可以使用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)