嘿我正在尝试分配我的课程模型的一部分,并与我的用户模型相关联。
我有3个型号: - 用户 - 课程(标题:,currentprogress:) - UserCourseAssignment。 (关联表)
我可以通过输入User.courses来获取用户已分配的课程但是它不会让我更新变量
#<Course id: 6, title: "beginnerscourse", created_at: "2016-03-20 12:42:44",
updated_at: "2016-03-20 12:42:44", reward1: nil, reward2: nil, reward3: nil,
reward4: nil, reward5: nil, currentslide: 0, totalslides: nil>]>
User = active_user
User.courses.find(6).currentslide = 1
User.save
对不起,如果我不清楚,更新了问题
答案 0 :(得分:3)
您不应该将类名(<div id="grad1"></div>
)指定为变量。在您的方案中,您只需使用User
。
active_user
当我写一个更好的解释为什么时,@ max回答了很好的解释,这里发生了什么。有关详细说明,请参阅his answer。
如果您已经知道课程ID,那么他在使用active_user.courses.find(6).update_attributes(current_slide: 1)
时也是正确的。如果您已经知道ID,则无需从数据库加载所有current_user的课程。只需使用Course.find
答案 1 :(得分:2)
User = active_user
User.courses.find(6).currentslide = 1
User.save
这里出现了很多问题。 User
声明一个常量,它将掩盖你的User
类!在Ruby中,任何以大写字母开头的标识符都是常量。
观看此示例:
User = active_user
# somewhere else in the code
User.find(5) # NoMethodError wtf!?
此外,如果您知道课程的ID,则无需首先通过该用户:
course = Course.find(6)
course.update_attributes(currentslide: 1)
如果您希望将查询范围作为访问控制器的糟糕版本的当前用户,您可以这样做:
course = Course.where(user: current_user).find(6)