2016-06-16 20 views
0

空白でないにもかかわらず、私はコンソールでモデル- 空白にすることはできません - それは

class Card < ActiveRecord::Base 
    belongs_to :CardColour 
    validates :CardColour, presence:true 

を持って、それが有効ではありませんしかし、私は

@a = Card.new(:card_colour_id =1) 

を入力します。私はa.errors @行うことで、なぜ尋ねると、コンソールは私がこれを見て時間を費やしてきた

=> #<ActiveModel::Errors:0x000000052e57e8 @base=#<Card id: nil, card_colour_id: 1>, @messages={:CardColour=>["can't be blank"]}> 

を伝え、完全に困惑し、私は一見行うことができない理由として、私の知恵の最後にしていていますRailsで最も簡単なもの。

私は同様のタイトルで質問を探しましたが、それらはすべてもっと複雑なシナリオのようです。私はこの例よりも進んでいますが、もっと複雑なことはありません。私は実際には3つの外部キーが設定されていて、有効な値が設定されていても空白にすることはできません。

this answer私のコードが正しいことを示唆しており、実際に私が望むことを実行します(つまり、CardColourモデルの実際のオブジェクトへのcard_colour_idリンクを検証します)。

+1

validates :CardColour, presence :trueを変更する必要がありますか?あなたは本当にRubyでもっと慣れ親しんでみてください。 'belongs_to:card_colour'と' validates:card_colour_id、presence:true'を試してみてください – Orlando

+0

あなたの団体やマイグレーションも表示できますか? –

+0

私はかなり新しいですが、何かが混乱しています.CardColourは適切なモデルであり、レコードが有効であるために記入する必要がある列のようです。 – Maxence

答えて

0

class Card < ActiveRecord::Base 
    belongs_to :card_colour 
    validates :card_colour_id, presence:true 

にモデルのコードを変更し、

@a = Card.new(:card_colour_id => 1) 

またはあなたがCardColourを検証する

@a = Card.new(card_colour_id: 1) 
+0

モデルクラスの名前はCamelCase ...そうすることになっています...それはbelongs_to:CardColourは正しいですか? – reedstonefood

1

新しい構文を使用して新しいカードのラインが、中にしてください新しいCardを作成してcard_colour_idで作成しますが、w ith CardColour。それがエラーを起こす理由です。

あなたは `CardColour`モデルがどのように見えるん何validates :your_model's_column, presence :true

+0

これは機能します!ありがとう!しかし、それはcard_colour_idとして任意の整数を受け入れますか?私はbelongs_toは外資系の関係を構築すると思った? – reedstonefood

関連する問題