【问题标题】:Default scope for production but not in development生产的默认范围,但不在开发中
【发布时间】:2013-08-13 14:34:39
【问题描述】:

我有一个模型,我想将结果限制为特定客户的结果,因此客户编号为 1(我的数据库也包含其他客户数据)

所以我有这样的范围:

default_scope {
  where(
    :owner_id => 1,
    :someother_criteria => false
  )
}

我希望此范围(:owner_id => 1 部分)在生产中处于活动状态,但在开发中不处于活动状态,因为我没有该数据并想使用我拥有的数据测试用户界面。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 rails-activerecord default-scope


    【解决方案1】:

    你可以试试这个:

    if Rails.env.production?
      # define your scope
    end
    

    或者,如果你想在不同的环境中定义不同的范围,你可以这样做:

    default_scope do
      case Rails.env
      when 'production'
        # define production default scope
      when 'development'
        # define development default scope
      end
    end
    

    【讨论】:

    • 这是我的想法,但如果我有其他搜索词要保留,那将是重复代码。
    • @JosephLeBrech 您可以定义要保留在 if 块之外的范围,对吗?你是怎么复制代码的?
    • 我也希望它们成为默认范围。
    • @JosephLeBrech 所以你想定义不同的默认范围?我更新了我的答案以反映它。
    • 这可能是最简单的方法。我在想你可以做(where(:a=>1) if Rails.env.production?).where(:b=>'b') 但更好看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 2014-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-08
    相关资源
    最近更新 更多