在Rails 4中,我想创建一个电影,然后更改权限

时间:2013-07-16 06:17:31

标签: ruby-on-rails ruby-on-rails-4

例如,创建一个像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]

我的问题是,如何创建一个电影,然后在创建后更改权限,不允许任何人更改它,包括创建它的用户。

2 个答案:

答案 0 :(得分:2)

您需要创建一些权限系统,即使用CanCan。然后在before_filter中,您将检查当前用户是否有权执行给定操作。

答案 1 :(得分:2)

检查以下帖子以仅允许创建对象的用户更改它:

devise-cancan-just-prevent-other-users-from-editing-objects

这使用 canCan 来提供详细说明的基于角色的权限。

然后相应地修改电影的代码。