2016-09-25 6 views
0

レールにCRUDを適用しようとしていますが、レコードを保存しませんでした。たとえば、Subjectというモデル(データベーステーブル)があります。 2つのフィールド(id、title)。レール5作成、更新、削除は保存しようとすると動作しません

>> subject = Subject.create(:id => 'Comp1', :title => 'Word Processing') 
(0.0ms) BEGIN 
#<Subject id: "Comp1", title: "Word Processing"> 
(0.0ms) ROLLBACK 

のみオブジェクトに保存されたデータが、私は新しい/保存

を使用しようとしていますときに、データベースに、ここに私のコードがあるではない:これは私がレコードを作成しようとしているコードです。
>> subject = Subject.new 
#<Subject id: nil, title: nil> 
>> subject.id = 'Comp1' 
"Comp1" 
>> subject.title = 'Word Processing' 
"Word Processing" 
>> >> subject.save 
(0.0ms)BEGIN 
(0.0ms)ROLLBACK 
false 

私はcreateメソッドを使用すると自動的にデータベースに保存されますが、私の場合はそうではありません。

私はsubject.errorsを使用する場合、これは結果

>> subject.errors 
#<ActiveModel::Errors:0x00000006b0d230 @base=#<Subject id: "Comp1", title: "Word Processing">, @messages={:course_group=>["must exist"]}, @details={:course_group=>[{:error=>:blank}]}> 

subject_idがcourse_groupテーブル内の外部キーであるので、多分それはです。私が望むのは、course_groupテーブルに追加せずにサブジェクトテーブルにデータを追加することだけです。

+0

と呼ばれた後subject.errorsをチェックしてみ '# mrvncaragay

答えて

0

これは検証やデータベース関連の問題のようですが、ROLLBACKをトリガーします。これは戻り値falseで示されます。

subject.save!を使用するか、subject.save

+0

subject.errorsをid'割り当てないようにしよう:0x00000006b0d230 @Base =#<件名ID: "器Comp1"、あなたのIDがそうでないときは、「ワードプロセッシング」>、@messages = {:course_group => ["存在していなければなりません"}、@details = {:course_group => [{:error =>:空白}]}>> – Gerald

+0

これは最初の問題です。 Subjectクラスを投稿すると、より具体的なことを言うことができます。これで、 'course_group'の検証を定義したように見えます。ですから、あなたは 'course_group'を提供するか、バリデーションを削除する必要があります。 – slowjack2k

関連する問題