2017-10-27 4 views
0

다음은 사용자와 관련된 일부 데이터를 가져 오는 SQL 쿼리입니다.rails에서 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 방식으로 결과를 얻지 못했습니다. 내가 이것을 정리할 수있는 방법이 있습니까?

답변

0

나는 왜 그것이 작동하지 않아야할지 모르겠다. SQL-Syntac을 수 SELECT * FROM users ...

이 할 수있는 다른 방법으로 전달 동적 : "some string #{user.id#ruby code} some more string"

당신은 다음과 같이 액티브에 querys을 할 수

: User.where(id: user.id).where(field2: value2).group_by(:somevalue).order(:id)