将创建操作限制为每个用户1个帖子

时间:2013-05-08 16:08:00

标签: ruby-on-rails activerecord devise applicationcontroller

我想让用户每个用户只能进行一次预科。但是我得到错误“未定义的方法`录取'为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

2 个答案:

答案 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