2011-12-29 6 views
0

저는 두 개의 레일즈 애플리케이션, 하나의 클라이언트가 ActiveResource와 하나의 서비스를 사용합니다. 나는 콘솔을 통해 다음 명령을 테스트입니다 :레일스는 액티브 리소스로 찾기 매개 변수를 무시합니다

User.find(:all, :params => {:email_address => "[email protected]"}) 

내가 내 사용자 테이블의 모든 레코드를 다시 얻을 내 이메일 매개 변수의 하나가 지정되지 않았습니다. 내 서비스 응용 프로그램에 대한 로그를 살펴 갈 때

Started GET "/users.json?email_address=myemail%40domain.com" for 127.0.0.1 at 2011-12-29 11:29:06 -0600 
    (0.4ms) SHOW search_path 
    Processing by UsersController#index as JSON 
    Parameters: {"email_address"=>"[email protected]"} 
    User Load (0.7ms) SELECT "users".* FROM "users" 
Completed 200 OK in 40ms (Views: 35.7ms | ActiveRecord: 3.3ms) 

내 매개 변수를 SQL 문에 포함되지 않은 다음과 같이

는 보여줍니다.

어떤 통찰력이라도 있습니까?

+0

사용해보십시오 –

+0

서비스 응용 프로그램 users_controller 인덱스 방법을 게시하시기 바랍니다 –

+0

PARAMS 여기 내 지수가사용자에 = User.all입니다 respond_to do | format | format.json {JSON 렌더링 : @users} 끝 params 객체를 파라미터 throught를 통과 나던 조건을 사용하고이 이 2011-12-29 12시 8분에서 127.0.0.1에 대한 "/users.json을"GET 시작 생성합니다 : 41 -0600 UserController # index as JSON 사용자로드 (0.3ms) SELECT "사용자" 완료 12ms에서 200 OK (보기 : 7.0ms | ActiveRecord : 4.1ms) – user1084769

답변

0

은, 컨트롤러는 여전히 다음과 같습니다 인덱스 방법 : 대신 조건 :

class UsersController < ActionController::Base 
def index 
    @users = User.find_all_by_email_address(email_address) 
    respond_to do |format| 
    format.json { render json: @users } 
    end 
end 
    #other methods down here 
end 
+0

감사합니다 jstim. 나는 activeresource와 activerecord와의 관계와 params와 condition을 구별했다. 내 목표는 activeresource 클라이언트에서 activerecord 서비스 앱으로 사용자를 로그인하는 것입니다. 두 개의 매개 변수가 유효화되면 사용자 데이터가 클라이언트로 전송되어 세션을 설정할 수 있습니다. 나는 원래 이메일 주소를 보내고 사용자를 다시 얻으려고했지만 여전히 실패했습니다. 이 질문에 대한 답변을 얻을 수있는 이유는 무엇입니까? – user1084769

+0

나는 특별한 것이 필요하다고 생각하지 않는다. 이들은 모두 AR 또는 AS의 일부로 사용할 수 있습니다.위에서 언급 한 사람처럼 컨트롤러에이 검색을 무시하는 무언가가있을 수 있습니다. 컨트롤러를 게시 할 수 있습니까? – jstim

+0

사용자 테이블을 보유하고있는 앱은 무엇인지 명확히하기 위해? 그것은 AR 또는 AS를 사용하는 것입니까? 당신은 양쪽에서 사용자를 캐싱하고 있습니까, 아니면 DB 호출이 섞여있을 수 있습니까? – jstim

0

조건은 :conditions 옵션을 통해 메서드를 통해 :params이 아닌 액티브 레코드로 전달됩니다. 그래서 find 전화는 것과 같아야합니다 :

User.find(:all, :conditions => { :email_address => "[email protected]" }) 

이상의 레일 3 스타일

는 :

User.where(:email_address => "[email protected]").all 

당신은 docs에서 find 방법에 대해 사용 가능한 매개 변수의 전체 목록을 찾을 수 있습니다.

class UsersController < ActionController::Base 
def index 
    @users = User.all 
    respond_to do |format| 
    format.json { render json: @users } 
    end 
end 
    #other methods down here 
end 

그러나 이메일과 일치 단지 사람을 렌더링하기 위해 인덱스 뷰를 얻기 위하여

, 당신은을 업데이트해야합니다

은 원래의 질문에 대한 귀하의 의견을 바탕으로
관련 문제