2016-10-09 3 views
0

우선, 현재 문제가 내가 원하는 것을 얻는 "올바른"방법이라는 것을 알지 못한다고합니다. 여기에 문제가 있습니다.컨트롤러에서 더 복잡한 SQL 쿼리를 작성하는 방법

I는 다음과 같습니다 users라는 이름의 데이터베이스가 :

|__id__|__dateTime__|___ipAddress___|__userName__| 
| 1 | time1 | 192.168.0.1 | Paul  | 
| 2 | time2 | 192.168.0.22 | Jessica | 
| 3 | time1 | 192.168.0.22 | Jon  | 

내가 컨트롤러에, 나는

User.find(3) 

같은 것들을 쓸 수 있는지 알고 그

SELECT * FROM users WHERE (users.id = 3) LIMIT 1 
의 상당이다

하지만 내 로그에서 몇 개의 고유 한 항목을 찾는 것과 같은 작업을 수행하려면 어떻게해야합니까? p 주소가있는 경우 또는 time1 동안 얼마나 많은 이벤트가 발생했는지 반환하는 쿼리가 필요한 경우

컨트롤러에서이 작업을 수행 할 수있는 방법이 있습니까? 그렇지 않은 경우 어떻게해야합니까?

+0

HTTP : //guides.rubyonrails를 .org/v4.2/active_record_querying.html – max

답변

1

활성 레코드는 found on the guides here 일 수있는 쿼리 인터페이스를 제공합니다. #find_by_query를 사용하여 arbitrary queries as well을 실행할 수 있으며 도우미 메서드에 의존 할 필요가 없습니다.

찾는 얼마나 많은 고유 한 IP 주소

이 나는 ​​많은 이벤트가 시간 1시 발생하는 방법을 반환하는 쿼리를 원하는 User.select(:ipAddress).distinct.count

같은 것을 달성 할 것

나는 당신이 이벤트로 무엇을 의미하는지 모르겠다. 그러나 당신이 e의 카운트를 원한다면 주어진 타임 스탬프와 일치하는 사용자 테이블에 ntries, 당신은

User.where(:dateTime=>time1).count (나는 당신의 주어진 예를 가짜라고 가정,하지만 당신은 열 dateTime으로 이름을 싶지 않을 것이다) 할 수

관련 문제