首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby: Declarative_authorization多态关联

Ruby: Declarative_authorization多态关联
EN

Stack Overflow用户
提问于 2010-09-03 23:28:22
回答 1查看 443关注 0票数 8

我有两个模型(项目和主题)。它们都由具有has_many关联的第三个模型用户拥有(用户有许多主题和项)。项目和主题have_many :图像。

图像模型是一个多态关联,因此表有列imageable_id和imageable_type。如果我同时有一个ID为1的项和一个ID为1的主题,那么表将类似于

代码语言:javascript
复制
id    imageable_id    imageable_type
------------------------------------
1     1               Item
2     1               Theme

我正在使用declarative_authorization重写我的数据库的SQL查询,以防止用户访问帐户外的项。我想写一个授权规则,允许用户只在能够读取自己拥有的项时才能读取图像。我似乎无法得到正确的语法(可能不支持它):

代码语言:javascript
复制
has_permission_on [:images], :to => [:manage], :join_as => :and do
  if_attribute :imageable => is { "Item" }
  if_permitted_to :manage, :items # Somehow I need to tell declarative_auth to imageable_id is an item_id in this case.
end

然后我会有另一条规则来模仿上面的规则,但主题是:

代码语言:javascript
复制
has_permission_on [:images], :to => [:manage], :join_as => :and do
  if_attribute :imageable => is { "Theme" }
  if_permitted_to :manage, :themes # Somehow I need to tell declarative_auth to imageable_id is a theme_id in this case.
end

有什么想法吗?提前感谢!

  • 科里斯·马林
EN

回答 1

Stack Overflow用户

发布于 2015-12-23 12:41:15

似乎您在has_permission_on方法中犯了一个错误。

我查看了在……上面属性

代码语言:javascript
复制
  has_permission_on(:images, :to => :manage, :join_as => :and) do
    if_attribute :imageable => "Item"
    if_permitted_to :manage, :items
  end

希望这能帮你!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3640239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档