2016-04-10 6 views
0

タスクモデル:many_to_many関連での編集を禁止するにはどうすればよいですか?

has_and_belongs_to_many :users 

Userモデル:

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

エラーは言う:#Taskため

未定義のメソッド `利用者」の問題と

has_and_belongs_to_many :tasks 

コード:0x007fd9e4f3ceb8

他のユーザー(タスク所有者以外のユーザー)が編集を許可しないようにするにはどうすればよいですか?

答えて

0

タスクには多くのユーザーが存在するため、@task.userは意味をなさないので、current_user == @task.userに問い合せることはできません。

@task.usersを実行できます。ユーザーが特定のタスクに属していることを確認するには、@task.users.any? { |user| user == current_user }を実行します。

より良いアプローチは、current_user.tasks.include? @taskであり、同じ仕事をしますが、コード量はより少なくなります。

関連する問題