Ruby on rails 如何仅允许创建类别的用户在rails中编辑类别

Ruby on rails 如何仅允许创建类别的用户在rails中编辑类别,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有两个表书签和类别。这些模型具有HABTM关系 一切正常,但我只想让创建了类别的用户能够编辑它们。我在书签上设置了这个选项,好的,但是有没有一种方法可以使用书签和类别之间的关系来设置它,或者我只是将其设置为与书签相同的方式?在类别表中有一个用户id。假设您有两个联接表: user.rb has_many :categories, :through => :user_categories category.rb has_many :users, :through => :user_

我有两个表
书签
类别
。这些模型具有HABTM关系


一切正常,但我只想让创建了
类别的
用户能够编辑它们。我在
书签
上设置了这个选项,好的,但是有没有一种方法可以使用
书签
类别
之间的关系来设置它,或者我只是将其设置为与
书签
相同的方式?在
类别
表中有一个
用户id

假设您有两个联接表:

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
Class BookMark < ActiveRecord::Base
   has_many :categories, :through => :bookmark_categories
   has_many :users, :through => :categories
end
您的_view.html.erb

if category.is_editable_by? current_user
  <%= link_to "edit", edit_category_path, category %>
end
如果category.u可编辑吗?当前用户
结束
如果意图是

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

然后我们需要在
bookmark
模型中有一个单独的列
user\u id
,以存储书签的创建者,并允许类似于
category
的访问

b) 创建类别的用户可以编辑该类别下的任何书签,然后我们可以使用关联的来获取具有权限的用户

bookmark.rb

has_many :categories, :through => :bookmark_categories
has_many :users, :through => :categories
Class BookMark < ActiveRecord::Base
   has_many :categories, :through => :bookmark_categories
   has_many :users, :through => :categories
end
类书签:书签\u类别
拥有多个:用户,:至=>:类别
结束

我们可以说
bookmark.users.include?(当前用户)
然后仅在满足此条件时才允许编辑。

您的要求是-您只希望创建书签的用户编辑它们?是,有没有一种方法可以使用书签和类别之间的关系来实现这一点,或者我只是在类别表中创建一个用户id列。请参阅下面我对这两种情况的回答。