2010-02-16 12 views
1

oracle_enhanced라는 어댑터를 사용하여 기존의 Oracle DB를 새 레일스 프로젝트 &으로 사용하고 있습니다. 어떤 정보/필드를 검색 할 수 있는지에 따라 DB에 대해 동적 검색을 할 수 있기를 원합니다.Ruby가 쿼리 문자열에서 객체를 생성합니다.

나는 내가 request.query_parameters 해시 테이블에서 PARAMATERS이 같은

class Order 
    attr_reader :customer_name, :acct_num, :order_date, :po_num, :qty. 
end 

으로 객체를

http://www.abc.com/order/show?acct_num=a123&po_num=789z 

에서 얻을 만들려고하고 있습니다.

내가 쿼리 문자열을 사용하여 모든 주문을 찾을 수 있습니다 무엇을 원하는 잘못된 길을 갈거야 경우 지금

곳 acct_num_in_model = acct_num_from_query_string 및 po_num_from_model = po_num_from_query_string 등 뭔가는 PO_NUMBER 후 복귀로 비어있는 경우 acct_number와 일치하는 모든 것 그리고 acct_num이 그 po와 일치하는 모든 것을 비운다면. 내가 기대하고있는 다음

abc.com/order/show?acct_num=a123&po_num=789z 

이 acct_num = A123

로 모든 주문을 반환 acct_num = A123 및 po_num = 789z

abc.com/order/show?acct_num=a123 로 모든 주문을 반환

abc.com/order/show?po_num=789z 

는 789z = po_num 모든 주문을 반환

abc.com/order/show?po_num=789z&qty=6 

가 po_num = 789z & 수량으로 모든 주문을 반환 = 당신이 레일을 사용하려는 감안할 때 6

+2

질문을 업데이트하고 데이터베이스에 액세스하는 방법을 나타낼 수 있습니까? Rails, Sequel 등입니까? –

+1

Rails 기반 솔루션으로 회신하지 않아도되는 사람들을 구하는 것입니다. –

답변

1

, 나는이 제안 :

QUERY_WHITELIST = ['po_num','qty','acct_num'] 
Order.find :all, :conditions => params.slice(*QUERY_WHITELIST) 

또는

QUERY_WHITELIST = ['po_num','qty','acct_num'] 
Order.all :conditions => params.slice(*QUERY_WHITELIST) 

당신의 레일 버전에 따라.

+0

이 솔루션을 사용할 때 ArgumentError Unknown 키가 나옵니다 : conditons (이는 조건이 아닌 erros 맞춤법입니다). 왜냐하면 나는 params.inspect를하면 ... "action"=> "show", "controller"=> "order"}가 목록에 포함되어 있기 때문입니다. 그래서 request.query_string에 쿼리 문자열의 매개 변수 만 들어 있기 때문에 params.slice (* QUERY_WHITELIST)를 request.query_string.slice (* QUERY_WHITELIST)로 변경했지만 OrderController #에서 TypeError가 String을 Integer로 변환 할 수 없습니다. 이렇게 나에게 도움이되지 않습니다. –

+0

슬라이스 메서드는 매개 변수를 "필터링"하므로 결과에 "액션"또는 "컨트롤러"가 더 이상 포함되지 않습니다. 그러나 query_string은 문자열입니다. 매개 변수 구문 분석 및 언 이스케이 핑 (unescaping)을 사용하여 피하고 싶지 않으면 사용하지 않을 것입니다. 나는 재현하려고 노력할 것이다. 나중에 다시 확인하십시오. – hurikhan77

+0

어떤 데이터베이스 인터페이스를 사용합니까? 내 해상도는 ActiveRecord입니다 ... 코드에서 "조건"을 철자 했습니까? 때때로 나에게 일어난다. – hurikhan77

관련 문제