Ruby on rails 如何禁止在多对多关联中编辑?

Ruby on rails 如何禁止在多对多关联中编辑?,ruby-on-rails,ruby,ruby-on-rails-4,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 %> 错误是: #任务的未定义方法“user”:0x007fd9e4f3

任务模型:

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 %>

错误是:

#任务的未定义方法“user”:0x007fd9e4f3ceb8


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

一个任务有许多用户,因此您不能询问当前用户==@task.user,因为
@task.user
没有任何意义

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

更好的方法是:
current_user.tasks.include@任务
,它将执行相同的任务,但代码量较短