我有这3个型号:这就是我需要的:
基本上我有records
,而user
必须持有指定给他的特定role
才能对record
进行更改。每个不同的record
可以有多个roles
,每个role
可以属于record
的许多不同版本。现在我有一个版本控件,每个角色都可以属于一个记录的许多不同版本(一个记录的不同版本可以通过记录的公共secondary_id属性关联)。
在三种模型之间建立这种关系的最佳方法是什么?
谢谢
答案 0 :(得分:0)
试试这个:
更改您的User
型号:
class User
has_many :roles
has_many :records
def has_access_to?(obj)
roles.exists?(:id => obj.role_ids)
end
end
控制器代码:
class RecordsController < ApplicationController
before_filter :require_user # checks if the user is logged in
before_filter :load_record, :except => [:index]
before_filter :require_permission, :except => [:new, :create, :index]
private
def require_permission
return true if current_user.has_access_to?(@record)
render :text => "You don't have permission to complete this action.",
:status => '401 Unauthorized'
return false
end
def load_record
case(action.to_sym)
when :new, :create
@record = current_user.records.build(params[:record])
when :edit, :update, :show, :destroy
@record = current_user.records.find(params[:id])
end
end
end
答案 1 :(得分:0)
使用cancan,http://github.com/ryanb/cancan。它会准确地为您提供所需的信息。