Class: IqAccessoryFilter
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- IqAccessoryFilter
- Defined in:
- app/models/iq_accessory_filter.rb
Overview
== Schema Information
Table name: iq_accessory_filters
Database name: primary
id :integer not null, primary key
comment :string
created_at :datetime not null
updated_at :datetime not null
creator_id :integer
customer_filter_id :integer
exclusive_item_group_id :integer
item_id :integer
updater_id :integer
Indexes
idx_iq_accessory_filters_unique (item_id,exclusive_item_group_id,customer_filter_id) UNIQUE
iq_accessory_filters_customer_filter_id_idx (customer_filter_id)
iq_accessory_filters_exclusive_item_group_id_idx (exclusive_item_group_id)
Foreign Keys
fk_rails_... (customer_filter_id => customer_filters.id)
fk_rails_... (exclusive_item_group_id => exclusive_item_groups.id)
fk_rails_... (item_id => items.id)
Belongs to collapse
-
#customer_filter ⇒ CustomerFilter
This filter excludes the IQ accessory or exclusive item group for matching customers, that is if there are any matching iq_accesory_filters, then that item is excluded from instant quoted accessories for that customer.
- #exclusive_item_group ⇒ ExclusiveItemGroup
- #item ⇒ Item
Class Method Summary collapse
- .create_single_customer_iq_accessory_filter(customer, item_or_exclusive_item_group, comment) ⇒ Object
-
.for_customer ⇒ ActiveRecord::Relation<IqAccessoryFilter>
A relation of IqAccessoryFilters that are for customer.
-
.for_item_or_exclusive_item_group ⇒ ActiveRecord::Relation<IqAccessoryFilter>
A relation of IqAccessoryFilters that are for item or exclusive item group.
-
.is_auto_generated_only ⇒ ActiveRecord::Relation<IqAccessoryFilter>
A relation of IqAccessoryFilters that are is auto generated only.
Methods inherited from ApplicationRecord
ransackable_associations, ransackable_attributes, ransackable_scopes, ransortable_attributes, #to_relation
Methods included from Models::EventPublishable
Class Method Details
.create_single_customer_iq_accessory_filter(customer, item_or_exclusive_item_group, comment) ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 |
# File 'app/models/iq_accessory_filter.rb', line 44 def self.create_single_customer_iq_accessory_filter(customer, item_or_exclusive_item_group, comment) iqaf = nil cf = CustomerFilter.create_single_customer_filter(customer) if cf.present? # first need customer filter party_criteria = {customer_filter_id: cf.id} item_or_exclusive_item_group_criteria = item_or_exclusive_item_group.class.to_s.underscore == 'item' ? {item_id: item_or_exclusive_item_group.id} : {exclusive_item_group_id: item_or_exclusive_item_group.id} criteria = party_criteria.merge(item_or_exclusive_item_group_criteria) iqaf = IqAccessoryFilter.where(criteria).first_or_create(criteria.merge({comment: comment})) end return iqaf end |
.for_customer ⇒ ActiveRecord::Relation<IqAccessoryFilter>
A relation of IqAccessoryFilters that are for customer. Active Record Scope
41 |
# File 'app/models/iq_accessory_filter.rb', line 41 scope :for_customer, ->(customer) { where(customer_filter_id: CustomerFilter::QueryBuilder.filter_ids_for_customer(customer)) } |
.for_item_or_exclusive_item_group ⇒ ActiveRecord::Relation<IqAccessoryFilter>
A relation of IqAccessoryFilters that are for item or exclusive item group. Active Record Scope
40 |
# File 'app/models/iq_accessory_filter.rb', line 40 scope :for_item_or_exclusive_item_group, ->(item_or_exclusive_item_group) { item_or_exclusive_item_group.class.to_s.underscore == 'item' ? where(["iq_accessory_filters.item_id = ?", item_or_exclusive_item_group.id]) : where(["iq_accessory_filters.exclusive_item_group_id = ?", item_or_exclusive_item_group.id]) } |
.is_auto_generated_only ⇒ ActiveRecord::Relation<IqAccessoryFilter>
A relation of IqAccessoryFilters that are is auto generated only. Active Record Scope
42 |
# File 'app/models/iq_accessory_filter.rb', line 42 scope :is_auto_generated_only, -> { joins(:customer_filter).where(customer_filters: {is_auto_generated: true}) } |
Instance Method Details
#customer_filter ⇒ CustomerFilter
This filter excludes the IQ accessory or exclusive item group for matching customers, that is if there are any matching iq_accesory_filters, then that item is excluded from instant quoted accessories for that customer
32 |
# File 'app/models/iq_accessory_filter.rb', line 32 belongs_to :customer_filter, optional: true |
#exclusive_item_group ⇒ ExclusiveItemGroup
34 |
# File 'app/models/iq_accessory_filter.rb', line 34 belongs_to :exclusive_item_group, optional: true |
#item ⇒ Item
33 |
# File 'app/models/iq_accessory_filter.rb', line 33 belongs_to :item, optional: true |