任务模型:
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
如何禁止其他用户(不是任务所有者之一)进行编辑?
答案 0 :(得分:0)
任务有很多用户,因此您无法提问current_user == @task.user
,因为@task.user
没有任何意义。
您可以执行@task.users
,并且为了检查用户是否属于特定任务,您可以执行@task.users.any? { |user| user == current_user }
。
更好的方法是:current_user.tasks.include? @task
,它会执行相同的工作,但代码数量会更少。