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@任务
,它将执行相同的任务,但代码量较短