【发布时间】:2014-07-05 15:32:42
【问题描述】:
我有模型对象Team、Post、User 以及Team 和User 之间的连接表Member。团队中的用户可以对帖子进行投票。在对帖子进行投票时,我想给创建 Post 点的用户。因此,我有一个“积分整数attribute in myMember”模型。我有一种方法可以给用户打分,如下所示:
def give_points_to_user(post, increase)
member = post.user.members.where(team_id: post.team.id).first
if increase
member.points += 5
else
member.points -= 5
end
member.save!
end
调用这个方法给了我这个错误:
undefined method `+' for nil:NilClass
那么,如果我想找到正确的成员,我的 find(或 where)调用应该如何查看?也就是说,创建帖子的成员/用户。
【问题讨论】:
-
表中是否已经有
value对应的points?如果不是member.points += 5将不起作用,因为当您提供member.points += 5时,它实际上是member.points = member.points+5,所以member.points将为nil,错误也是如此。 -
@Pavan 看来你是对的。我虽然整数的默认值是 0。不使用 += 或 -= 使它工作(至少没有错误)。
-
你需要让你的字段默认为 0
-
刚刚尝试做一个正常的分配来测试它,
member.points = 5。将添加更多逻辑以使其按我想要的方式运行。 -
嗯,很好。同时我会写我的评论作为答案。
标签: sql ruby-on-rails ruby activerecord ruby-on-rails-4