我想让用户每个用户只能进行一次预科。但是我得到错误“未定义的方法`录取'为nil:NilClass”。我怎么能让它工作? (如果问题,我使用devise作为用户身份验证。)
def matriculation_limit
if self.user.matriculations(:reload).count <= 1
errors.add(:base, "Yuo already have one matriculation form")
else
redirect_to new_matriculation_path
end
end
答案 0 :(得分:1)
使用has_one
关联,则关联查找器方法与@user.matriculation
相同,而不是@user.matriculations
。计算它们是没有意义的,因为只会有一个。
关于评论:
您无需检查用户拥有多少个预科,因为它是一个单一的关联,因此您只需更新关联(更改{中的外键列matriculation_id
中的ID {1}}表)
users
答案 1 :(得分:0)
self.user == user_object.user
。并且好像你没有类用户的方法用户。另外一件事,你有has_one,所以你必须使用self.matriculation
如此正确
if self.matriculation
errors.add(:base, "Yuo already have one matriculation form")
else
redirect_to new_matriculation_path
end