1

我首先想到的是使用default_scope对每个请求强制一个条件,但它似乎不起作用。

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

default_scope的价格是这样的:

default_scope where(type: "normal") 

我正在开发一种移植到 Rails 的“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

编辑

导轨 3.2.8

4

0 回答 0