Service
とProduct
という2つのサブモデルがあり、ProductBase
を継承しています。そして私はそれを消費する別のモデルを持っています。多くのAcquireBasket
を持つAcquire
です。私のコードをチェックアウト:レールでSTIリストを反復する
product_base.rb:
class ProductBase < ActiveRecord::Base
extend ::EnumerateIt
include Searchable
self.table_name = 'products'
end
product.rb:
class Product < ProductBase
default_scope { where(kind: ProductKind::PRODUCT) }
def initialize(attributes = {})
super(attributes)
self.kind = ProductKind::PRODUCT
self.status = ProductStatus::DRAFT
end
end
service.rb:
class Service < ProductBase
default_scope { where(kind: ProductKind::SERVICE) }
def initialize(attributes = {})
super(attributes)
self.kind = ProductKind::SERVICE
self.status = ProductStatus::DRAFT
end
end
acquire_basket.rb:
class AcquireBasket < ActiveRecord::Base
extend ::EnumerateIt
belongs_to :acquire
belongs_to :product
end
私のプロジェクトの一部では、両方のモデルのリスト(バスケットを取得)、Service
とProduct
を取得します。そして、私はそれの中にサービスがあるかどうかを確認する必要があります。チェックする
私のコードはでした:
def services_in?(acquire)
acquire.baskets.map(&:product).detect(&:service?)
end
コード作品、私は後の最初のサービス、製品を渡す場合にのみ!または、私がそれらの1つしか持っていない場合。