强制关闭模型的每个查询以及嵌套

时间:2013-01-28 17:20:22

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

我首先考虑使用default_scope强制对每个请求施加条件,但它似乎不起作用。

例如,如果我有Product.include(:prices),则不会使用默认范围。我不确定它是否是正确的行为。

我的default_scope价格是这样的:

default_scope where(type: "normal") 

我正在研究移植到铁轨的“crm”,我们感兴趣的唯一价格是“正常”价格。我可以在任何地方编辑代码,但只要需要从数据库中查询价格,就可以更加简单地“强制执行”条件。出于同样的原因,使用named_scope现在也不是替代方案,因为它可能需要大量的重构。

更多信息,因为它“应该”起作用但不起作用......

class Ts::Price < ActiveRecord::Base
  acts_as_terrasoft
  default_scope where(PriceKindID: "{43D5117A-D52D-4E72-B33B-7D3158524BF1}")

  .. 

  other scopes

  ..
end

实际通话

products = Product.includes(:supplier, :prices, :user)

... some more where unrelated to prices

products = products.find(:all, {
  conditions: {
      :vendors_Products => {
          AccountTypeID: type
      }
  },
  limit: @count,
  offset: @offset * @count
})

产品

class Ts::Product < ActiveRecord::Base
  acts_as_terrasoft

  self.table_name =   "Products"
  self.primary_key =  "ID"

  has_many :prices, class_name: "::Ts::Price", foreign_key: "ProductID", :dependent => :destroy
end

修改

Rails 3.2.8

0 个答案:

没有答案