我如何只允许创建类别的用户在rails中编辑它

时间:2013-06-23 08:33:38

标签: ruby-on-rails ruby

我有两张表bookmarkscategories。这些模型具有HABTM关系。

一切正常,但我只想允许创建users的{​​{1}}能够对其进行编辑。我在category上设置好了,但有没有办法使用bookmarksbookmarks之间的关系来设置它,或者我只是设置它与{{1}相同的方式}}?在categories表格中有bookmarks

2 个答案:

答案 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

答案 1 :(得分:1)

如果意图是

a)只有创建书签的用户才能编辑它们

然后我们需要在user_id模型中有一个单独的列bookmark来存储书签的创建者并允许访问类似于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)然后只有在满足条件时才允许编辑。