我首先想到的是使用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