1

私は最初に を使用し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

4

0 に答える 0