2012-04-16 4 views
2

꽤 많은 매개 변수를 사용할 수있는 레일을 사용하여 API를 구축하고 있습니다. 사용자가 우연히 요청에 불필요한 매개 변수를 추가하여 요청을 모호하지 않게하는 것이 이상적입니다. 정상적으로 처리하고 싶습니다. 이것은 분명히 단순히 PARAMS 해시에 추가 만약 거기에 아무것도 던져 질 것이다 UnknownAttributeError 이후 레일에서 params 해시에서 추가 url 매개 변수를 거부합니다.

ApiRequest.new(params) 

를 작성에서 저를 방지 할 수 있습니다. 추가 속성을 거부하는 간단한 방법이 있습니까? 아니면 새 개체를 만들기 전에 수동으로 요청의 유효성을 검사하는 메서드를 작성해야합니까? 또한, 이것이 발생하면 HTTP 400으로 응답해야합니까, 이것은 API에 나쁜 관행으로 간주됩니까?

감사합니다, 제안 세르지오에 대한 톰

+0

어떻게 '추가'속성을 결정합니까? –

+0

여분으로 나는 ActiveRecord에 없거나 모델의 속성으로 정의 된 것을 의미합니다. 기본적으로 특정 API 작업에 대해 정의되지 않은 매개 변수입니다. –

+0

'YourModel.attributes'를 호출하여 모든 모델 속성을 얻을 수 있습니다. 그런 다음 추가 매개 변수를 필터링 할 수 있습니다. –

답변

1

덕분에, 나는 질량에 관계없이 해시 무엇인지에 할당 날 수 있습니다 내 ApiRequest 클래스에 다음 초기화 방법을 추가 끝났다. 누군가가 이것을 사용한다면 반드시 속성이 attr_protected가되어 있는지 확인하십시오.

def initialize(params) 
    params.delete_if {|k| !self.respond_to? "#{k}="} 
    super 
end 
관련 문제