我有两个表bookmarks
和categories
。这些模型具有HABTM关系。我如何只允许创建类别的用户在rails中编辑它
一切正常,但我只想让users
谁创建了category
能够编辑它们。我在bookmarks
上设置了这个设置,但是有没有办法使用bookmarks
和categories
之间的关系来做到这一点,或者我只是将其设置为与bookmarks
相同?在categories
表中有user_id
。
我有两个表bookmarks
和categories
。这些模型具有HABTM关系。我如何只允许创建类别的用户在rails中编辑它
一切正常,但我只想让users
谁创建了category
能够编辑它们。我在bookmarks
上设置了这个设置,但是有没有办法使用bookmarks
和categories
之间的关系来做到这一点,或者我只是将其设置为与bookmarks
相同?在categories
表中有user_id
。
假设你已经加入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
您还需要防止在控制器中进行编辑。 – doesterr
如果目的是
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)
然后允许编辑仅当此条件满足。
您的要求是 - 您只需要创建书签的用户编辑它们? –
是的,有没有办法做到这一点使用书签和类别之间的关系,或者我只是在类别表中创建一个用户ID列 –
请查看我的答案下面的两种情况。 –