2016-04-10 8 views
0

Görev modeli:Many_to_many ilişkilendirmesinde düzenlemeyi nasıl yasaklarım?

has_and_belongs_to_many :users 

Kullanıcı modeli:

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

Hata diyor: # Görev için

tanımsız yöntem `kullanıcıyı' konuyla

has_and_belongs_to_many :tasks 

Kodu : 0x007fd9e4f3ceb8

Başka bir kullanıcıya (görev sahiplerinden biri değil) Düzenleme'ye nasıl izin vermezim?

cevap

0

Bir görevin birçok kullanıcısı vardır, bu nedenle current_user == @task.user sorusunu soramazsınız, çünkü @task.user hiçbir anlam ifade etmemektedir.

@task.users yapabilir ve bir kullanıcının belirli bir göreve ait olduğunu kontrol etmek için @task.users.any? { |user| user == current_user } yapabilirsiniz.

Daha iyi bir yaklaşım şöyle olurdu: current_user.tasks.include? @task ve aynı işi yapacak, ancak daha kısa kod ile.

İlgili konular