2016-04-10 2 views
0

Задача:Как запретить редактирование в ассоциации many_to_many? Модель

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 : 0x007fd9e4f3ceb8

Как запретить другому пользователю (а не одному из владельцев задач) редактировать?

ответ

0

Задача имеет много пользователей, поэтому вы не можете задать current_user == @task.user, потому что @task.user не имеет никакого смысла.

Вы можете сделать @task.users, и для проверки того, что пользователь принадлежит к определенной задаче, вы можете сделать @task.users.any? { |user| user == current_user }.

Лучшим подходом будет: current_user.tasks.include? @task, и он будет выполнять ту же работу, но с более коротким количеством кода.

Смежные вопросы