2017-07-12 7 views
0

教師のカウントが上がるかどうかを調べるifステートメントを追加しました。これはclassroom_showなので、ページが更新またはリダイレクトされると自動的に通知を作成します。私はカウントが、私はページに移動しようとすると、それは私にエラーを与える新しいエントリが#<User :: ActiveRecord_Associations_CollectionProxy>のための未定義のメソッド `count = '

教室コントローラ(アクションが行われている場合)

@classroom_teacher = ClassroomTeacher.new 

if @classroom_teacher.save && @classroom.teachers.count +=1 
    @classroom.teachers.each do |teacher| 
    create_teacher_notification @classroom, teacher 
    end 
end 

を保存されていることを確認することができると思いました。

ため

NoMethodError未定義のメソッド `回数=」もしかして?カウント

Classroom Teacherが実際に作成されたことを確認する良い方法はありますか?教師が教室に読んで読めるので、私はそれがユニークであることを望んでいません。私はいくつか試しました。

@classroom_teacher = ClassroomTeacher.build 

@classroom_teacher = ClassroomTeacher.create 

ビルドおよび作成しているため動作しません。ここではそれらのために定義されていないが、彼らは成功し、保存します。

答えて

1

Classroom has_many:teachers - その場合の関連性があるようです。

もしそうなら、私はなります:新しい関連付けが保存されていない場合

@classroom.teachers.new 

if @classroom.save 
    @classroom.teachers.each do |teacher| 
    create_teacher_notification @classroom, teacher 
    end 
end 

保存はfalseを返します。

1

NoMethodError未定義のメソッドが `

のために「=カウント上記のエラーの原因は次のとおりです。ActiveRecordコレクションを返します。あなたが@classroom.teacherscount=メソッドを呼び出そうとしている

@classroom.teachers.count += 1 # is actually short hand for 
@classroom.teachers.count = @classroom.teachers.count + 1 

これを変更することで達成しようとしていることは

count = @classroom.teachers.count # Save the teachers count in a variable 
# Compare the count after save with the previous count 
if @classroom_teacher.save && @classroom.teachers.count == count + 1 
    @classroom.teachers.each do |teacher| 
    create_teacher_notification @classroom, teacher 
    end 
end 
+0

これは(ありがとう)動作しますが、通知は作成されていません。私は、新しい教師が追加されたかどうかを調べるためにカウントを使用しましたが、新しい教師として数えていないようです。 (表示するエラーメッセージはありません) – MaxLeoTony

+0

理由は '@classroom_teacher = ClassroomTeacher.new'です。あなたは' teacher_id'を渡していません。どうすれば '@ classroom.teachers'の数が増えるでしょうか –

+0

ClassroomTeacher、保存すると、teacher_idがあり、Classroom.teacherとして認識されますか? (私はまだレール協会に調整しています) – MaxLeoTony

関連する問題