2013-06-23 69 views
0

我有兩個表bookmarkscategories。這些模型具有HABTM關係。我如何只允許創建類別的用戶在rails中編輯它

一切正常,但我只想讓users誰創建了category能夠編輯它們。我在bookmarks上設置了這個設置,但是有沒有辦法使用bookmarkscategories之間的關係來做到這一點,或者我只是將其設置爲與bookmarks相同?在categories表中有user_id

+0

您的要求是 - 您只需要創建書籤的用戶編輯它們? –

+0

是的,有沒有辦法做到這一點使用書籤和類別之間的關係,或者我只是在類別表中創建一個用戶ID列 –

+0

請查看我的答案下面的兩種情況。 –

回答

1

假設你已經加入2個表:

user.rb

has_many :categories, :through => :user_categories 

category.rb

has_many :users, :through => :user_categories 
has_many :bookmarks, :through => :bookmark_categories 

def is_editable_by?(user) 
    user.category.include? self 
end 

bookmark.rb

has_many :categories, :through => :bookmark_categories 
has_many :users, :through => :categories 

your_view.html.erb

if category.is_editable_by? current_user 
    <%= link_to "edit", edit_category_path, category %> 
end 
+0

您還需要防止在控制器中進行編輯。 – doesterr

1

如果目的是

a)僅誰創建用戶的書籤可以編輯這些

然後我們需要在bookmark模型有一個單獨的列user_id存儲書籤的創造者並允許訪問類似category

b)創建該類別的用戶可以編輯該類別下的任何書籤,然後我們可以使用關聯獲得具有權限的用戶。

bookmark.rb

Class BookMark < ActiveRecord::Base 
    has_many :categories, :through => :bookmark_categories 
    has_many :users, :through => :categories 
end 

,我們就可以說bookmark.users.include?(current_user)然後允許編輯僅當此條件滿足。

相關問題