2012-04-16 5 views
2

かなりのパラメータを取ることができるレールを使用してAPIを構築しています。理想的には、ユーザーが要求に余計な不必要なパラメータを追加して、要求をあいまいにしない場合は、通常のように処理したいと考えています。これは明らかにparamsハッシュ内の余分なものがあるかどうUnknownAttributeErrorがスローされますので、単にparamsからレールに余分なURLパラメータを拒否する

ApiRequest.new(params) 

を書いてから私を防ぎます。余分な属性を拒否する簡単な方法があるのですか、新しいオブジェクトを作成する前に、要求を手動で検証するメソッドを作成する必要があります。また、これが起こる場合、私はHTTP 400で応答しなければなりませんか?

おかげで、提案セルジオため トム

+0

「余分な」属性はどのように決定しますか? –

+0

余分に私は、ActiveRecordにないか、モデルの属性として定義されているものを意味します。基本的には、その特定のAPIアクションに対して定義されていないパラメータです。 –

+0

'YourModel.attributes'を呼び出すことで、すべてのモデル属性を取得できます。次に、余分なパラメータを除外することができます。 –

答えて

1

おかげで、私は質量に関係なく、ハッシュにあるものの割り当てに私を可能にする私のApiRequestクラスで、次のinitializeメソッドを追加することになりました。もし誰かがこれを使うのであれば、属性がattr_protectedになっていることを確認してください。

def initialize(params) 
    params.delete_if {|k| !self.respond_to? "#{k}="} 
    super 
end 
関連する問題