例如,创建一个像IMDB一样的小电影评论应用。
我假设它是这样的
# app/models/User.rb
class User < ActiveRecord::Base
has_many :reviews
has_many :movies, through: :reviews
end
# app/models/Movie.rb
class Movie < ActiveRecord::Base
has_many :reviews
accepts_nested_attributes_for :reviews
end
class Review < ActiveRecord::Base
belongs_to :user
belongs_to :movie
end
# app/controllers/reviews_controller.rb
class Reviews Controller < ApplicationController
before_action :set_movie, only: [:show, :edit, :update, :destroy, :reviews]
我的问题是,如何创建一个电影,然后在创建后更改权限,不允许任何人更改它,包括创建它的用户。
答案 0 :(得分:2)
您需要创建一些权限系统,即使用CanCan。然后在before_filter
中,您将检查当前用户是否有权执行给定操作。
答案 1 :(得分:2)
检查以下帖子以仅允许创建对象的用户更改它:
devise-cancan-just-prevent-other-users-from-editing-objects
这使用 canCan 来提供详细说明的基于角色的权限。
然后相应地修改电影的代码。