0

Rails はモデル クラスのインスタンスが空かどうかをどのように判断しますか?

Post モデルのインスタンスがあるとします。

#<Post id: 14, related_id: 20999, related_type: "News", text: nil, created_at: "2012-09-01 04:32:27", updated_at: "2012-09-01 04:32:27">

レコードは保存され、有効です。しかし、「空?」と呼んでいます。それはtrueを返します。オブジェクトが空であると判断するRailsの基準は何ですか?

以下を使用する関連モデルがある場合、これが問題を引き起こしています。

validates_presence_of :post

関連オブジェクトが空の場合、検証は失敗します。「空っぽ」でも構いませんが。私に関する限り、それは本当に空ではなく、テキスト フィールドが nil であってもまったく問題ありません。

4

1 に答える 1

1

"NoMethodError: undefined method `empty?' を取得する必要があります。for Post" を呼び出すと、空の? モデルのどのインスタンスでも、activerecord モデルはそのようなメソッドを定義していないためです。あなたは空を見つけることができますか?たとえば、Array、String、Hash ではメソッドを使用できますが、activerecord インスタンスでは使用できません。実はRailsでもactiverecordでもないRubyのメソッドです。

要約すると、次のことができる場合:

Post.new.empty?

また

Post.last.empty?

また

p = Post.last
p.empty?

それは間違っています。モデルのどこかで空を定義していることを意味しますか? メソッドまたは別の場所からのインクルード。だからあなたのモデルをチェックしてください。これがお役に立てば幸いです。

于 2012-09-01T06:02:48.313 に答える