2016-04-19 9 views
2

まあ、私はRailsful APIを、レール4.2.6とRuby 2.3.0を使ってビルドしています。 :プログラムのリソースがあり、Google PostmanでPOSTリクエストを送信しようとすると、「空ではありません」というエラーが表示されます。 待ち、私はこれを送信すると、私はポストマンを通じて、...railsは属性として「false」値を持つJSONリクエストを読み取ることができません

を説明しましょう:

{ 
    "program": { 
    "expiration_points": "false" 
    } 
} 

私は戻って、この取得しています:私はすでに試した

{ 
    "errors": { 
    "expiration_points": [ 
     "can't be blank" 
    ] 
    } 
} 

を「偽"、" false "、falseおよび:false。

expiration_pointsの "true"またはtrueの値でPOSTリクエストを行うと、正常に動作します。私はデフォルトを定義した

思い出し:expiration_pointsのための偽移行の属性。

だから...質問は、私が間違っていることですか?ありがとうbtw。

+0

どのような種類がありますか? –

+0

Hey @maxpleaner、私は** validates:expiration_points、presence:true **をプログラムモデル上に持っています。 –

+0

@muistooshort返す:** false **。 –

答えて

4

だから、あなたはあなたのモデルでこれを持っている:

validates :expiration_points, presence: true 

のでpresence: trueは何をするのでしょうか?私たちは、validates documentationチェックできるが、それはただの言葉:

このメソッドは、すべてのデフォルトのバリデータと「検証」で終わる任意のカスタムバリデータクラスへのショートカットです。 Railsのデフォルトのバリデータは、PresenceValidatorなどの場所にカスタムバリデータクラスを作成することで、特定のクラス内でオーバーライドできます。
[...]

は、それはちょうど私達に例の束を与え、オプションの一部は何をすべきかを教えてくれる。 PresenceValidatorのドキュメントを探すことはできますが、そのようなことはありません。

あなたはしばらくのRailsを使用してきたい場合は、

validate :f, :presence => true 

が機能的に同等であることを知っているだろう:

validates_presence_of :f 

validates_presence_of documentation周りはまだです:

指定された属性が空白でないことを検証します(Object#blank?で定義されています)。
[012]
ブール値フィールド(実際の値がtrueおよびfalseの場合)の存在を検証する場合は、validates_inclusion_of :field_name, in: [true, false]を使用します。

これは、Object#blank?がブール値(false.blank? # => true)を処理するためです。

ですから、まったくpresence: trueを望んでいない、あなたの代わりにin: [ true, false ]を使用する:あなたは、検証の

validate :expiration_points, :in => [ true, false ] 
関連する問題