作业:标题:字符串 权限:user_id:integer,subject_class:string,subject_id:integer,action:string
分配has_many:permissions,:foreign_key => :subject_id 但是我如何确保它知道subject_class == self.class.to_s要求?
更新:使用:conditions => {:subject_class => 'Assignment'},我如何确保何时执行权限。新的:subject_class也已设置。
答案 0 :(得分:0)
您希望对(http://wiki.rubyonrails.org/howtos/db-relationships/polymorphic)
使用多态关联在您的作业模型中,您将执行以下操作:
has_many :permissions, :as => :subject
在你的Permission模型中,你会这样做:
belongs_to :subject, :polymorphic => true
但是,您需要将subject_class字段重命名为subject_type,以便隐式工作。完成所有这些后,您将获得Rails免费提供的所有内容。创建新权限时,您不需要传递:subject_type。您可以创建这样的权限,并且:subject_type将自动为您填写:
assignment = Assignment.create(:title => "My Assignment")
permission = Permission.create(:subject => assignment, :action => "read", :user => current_user)
- or -
assignment.permission.create(:user => current_user, :action => "read")