如何在many_to_many关联中禁止编辑?

时间:2016-04-10 17:14:52

标签: ruby-on-rails ruby ruby-on-rails-4

任务模型:

has_and_belongs_to_many :users

用户模型:

has_and_belongs_to_many :tasks

问题代码:

<% if current_user == @task.user %>
  <%= link_to "Edit", edit_task_path, class: "btn btn-warning" %>
<% end %>

错误说:

  

#Task的未定义方法`user':0x007fd9e4f3ceb8

如何禁止其他用户(不是任务所有者之一)进行编辑?

1 个答案:

答案 0 :(得分:0)

任务有很多用户,因此您无法提问current_user == @task.user,因为@task.user没有任何意义。

您可以执行@task.users,并且为了检查用户是否属于特定任务,您可以执行@task.users.any? { |user| user == current_user }

更好的方法是:current_user.tasks.include? @task,它会执行相同的工作,但代码数量会更少。