繁体   English   中英

#的未定义方法`count ='

[英]undefined method `count=' for #<User::ActiveRecord_Associations_CollectionProxy

我添加了一条if语句,以查看教师人数是否增加,因为这是“ classroom_show”,如果刷新页面或将页面重定向到该页面,它将自动创建通知。 我以为计数可以确保保存新条目

课堂控制器(正在执行操作的地方)

@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未定义的方法“ count =”

你的意思是? 计数

有没有更好的方法来确保确实创建了“课堂老师”? 我不希望它具有独特性,因为可以将老师朗读到教室。 我已经尝试了几件事。

@classroom_teacher = ClassroomTeacher.build 

@classroom_teacher = ClassroomTeacher.create 

不起作用,因为未在此处为其定义构建和创建,但它们确实保存成功。

NoMethodError未定义的方法“ count =”

出现上述错误的原因是:

您正在尝试在@classroom.teachers上调用count=方法,该方法将返回ActiveRecord集合

@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

好像有一个关联,教室has_many:teachers-是这种情况吗?

如果是这样,我会:

@classroom.teachers.new

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

如果新的关联未保存,则保存将返回false。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM