私は最初に を使用し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
編集
レール 3.2.8