-1

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

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

4

2 回答 2

2

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

于 2013-07-16T06:39:29.963 回答
2

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

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

这使用canCan提供详细解释的基于角色的权限。

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

于 2013-07-16T07:14:54.887 回答