我首先考虑使用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