2

かなりの数のパラメーターを取ることができるレールを使用して API を構築しています。理想的には、ユーザーがリクエストをあいまいにしない余分な不必要なパラメーターを誤ってリクエストに含めた場合、通常どおり処理したいと思います。これは明らかに私が単に書くことを妨げます

  ApiRequest.new(params)

params ハッシュに余分なものがあると、UnknownAttributeError がスローされるためです。余分な属性を拒否する簡単な方法はありますか、それとも、新しいオブジェクトを作成する前にリクエストを手動で検証するメソッドを作成する必要がありますか? また、これは API の悪い習慣と見なされますか? これが発生した場合、HTTP 400 で応答する必要がありますか?

ありがとう、トム

4

1 に答える 1

1

Sergioの提案に感謝し、ApiRequestクラスに次のinitializeメソッドを追加しました。これにより、ハッシュの内容に関係なく、一括割り当てが可能になります。誰かがこれを使用する場合は、必要に応じて属性がattr_protectedであることを確認してください。

def initialize(params)
    params.delete_if {|k| !self.respond_to? "#{k}="}
    super
end
于 2012-04-17T15:44:37.670 に答える