首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在我的专家策略中使用作用域(Rails 5)

在我的专家策略中使用作用域(Rails 5)
EN

Stack Overflow用户
提问于 2018-09-09 21:56:57
回答 1查看 71关注 0票数 0

如何在我的专家策略中使用模型中定义的作用域?

在我的模型中我有一个作用域:

代码语言:javascript
运行
复制
scope :published, ->{ where.not(published_at: nil )}

在我的权威政策中,我有

代码语言:javascript
运行
复制
class CompanyPolicy < ApplicationPolicy
    def index?
        true
    end
    def create?
        user.present?
    end
    def new?
        true
    end
    def show?
        true
    end
    def update?
      user.present? && user == record.user
    end
end

我如何在专家政策中使用我的范围?我只想在它“发布”的情况下展示它,就像这样,目前不起作用:

代码语言:javascript
运行
复制
class CompanyPolicy < ApplicationPolicy
    def show
       record.published?
    end
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-09 22:31:01

作用域是类方法,你不能在实例上调用它们。

您还必须定义一个published?实例方法:

代码语言:javascript
运行
复制
def published?
  published_at.present?
end

如果您使用以下命令询问记录是否存在于给定的作用域中,则可以使用作用域:

代码语言:javascript
运行
复制
User.published.exists?(user.id)

如果作用域包含用户id,它将返回true,但我不建议这样做,因为它需要对数据库进行额外的查询,才能从已有的user实例中获得一些信息。

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

https://stackoverflow.com/questions/52245219

复制
相关文章

相似问题

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