From 60a8d6ba1e0d30cff472b179d39617b436ec5c45 Mon Sep 17 00:00:00 2001 From: Chris Gunther Date: Thu, 20 Jan 2022 20:12:01 -0500 Subject: [PATCH] Move definition of `search_joins` attribute from records to search action (#511) Previously it was up to each record to define this attribute, if it offered the search action. This created scenarios where a record like [`Bin`](https://github.com/NetSweet/netsuite/blob/9f1000535d62045e1fcb6220192840c943eaba57/lib/netsuite/records/bin.rb) offered the `search` action, but didn't define the `search_joins` attribute and therefore searching bins would error: ``` undefined method `search_joins=' for #"WIP-Fabric"}> (NoMethodError) ``` Due to `SearchResult` assuming the record had such an attribute: https://github.com/NetSweet/netsuite/blob/9f1000535d62045e1fcb6220192840c943eaba57/lib/netsuite/support/search_result.rb#L112 Now adding the `search` action to a record automatically adds the necessary `search_joins` attribute. The attribute was previously defined on `AssemblyComponent`, `SerializedInventoryItemLocation`, and `WorkOrderItem`, however none of those support actions at all, let alone the `search` action. They're all records for sublist items. I suspect the attribute was erroneously introduced in the first place as a result of copy/pasting to create the record. --- HISTORY.md | 2 +- lib/netsuite/actions/search.rb | 2 ++ lib/netsuite/records/account.rb | 1 - lib/netsuite/records/accounting_period.rb | 2 +- lib/netsuite/records/assembly_component.rb | 2 -- lib/netsuite/records/assembly_item.rb | 1 - lib/netsuite/records/assembly_unbuild.rb | 1 - lib/netsuite/records/cash_refund.rb | 1 - lib/netsuite/records/cash_sale.rb | 1 - lib/netsuite/records/contact.rb | 1 - lib/netsuite/records/credit_memo.rb | 1 - lib/netsuite/records/currency_rate.rb | 1 - lib/netsuite/records/custom_record.rb | 1 - lib/netsuite/records/customer.rb | 1 - lib/netsuite/records/customer_deposit.rb | 1 - lib/netsuite/records/customer_payment.rb | 1 - lib/netsuite/records/customer_refund.rb | 1 - lib/netsuite/records/deposit.rb | 1 - lib/netsuite/records/deposit_application.rb | 1 - lib/netsuite/records/estimate.rb | 1 - lib/netsuite/records/inbound_shipment.rb | 1 - lib/netsuite/records/inventory_item.rb | 2 +- lib/netsuite/records/inventory_number.rb | 1 - lib/netsuite/records/invoice.rb | 1 - lib/netsuite/records/item_fulfillment.rb | 1 - lib/netsuite/records/item_receipt.rb | 1 - lib/netsuite/records/job.rb | 1 - lib/netsuite/records/location.rb | 1 - lib/netsuite/records/lot_numbered_inventory_item.rb | 2 +- lib/netsuite/records/non_inventory_sale_item.rb | 1 - lib/netsuite/records/opportunity.rb | 1 - lib/netsuite/records/payroll_item.rb | 1 - lib/netsuite/records/purchase_order.rb | 1 - lib/netsuite/records/sales_order.rb | 1 - lib/netsuite/records/serialized_inventory_item_location.rb | 1 - lib/netsuite/records/service_sale_item.rb | 1 - lib/netsuite/records/subsidiary.rb | 1 - lib/netsuite/records/transfer_order.rb | 1 - lib/netsuite/records/vendor.rb | 1 - lib/netsuite/records/vendor_bill.rb | 1 - lib/netsuite/records/work_order.rb | 1 - lib/netsuite/records/work_order_item.rb | 1 - 42 files changed, 6 insertions(+), 42 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 6fbf3e88c..388831cff 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -15,7 +15,7 @@ ### Fixed * Fix "undefined method `[]` for #" when adding File (#495) -* +* Moved definition of `search_joins` attribute from records to search action. The attribute was removed for AssemblyComponent, SerializedInventoryItemLocation, and WorkOrderItem as they don't offer the search action. (#511) ## 0.8.10 diff --git a/lib/netsuite/actions/search.rb b/lib/netsuite/actions/search.rb index e5f8420dd..5d14f18b3 100644 --- a/lib/netsuite/actions/search.rb +++ b/lib/netsuite/actions/search.rb @@ -235,6 +235,8 @@ def success? module Support def self.included(base) base.extend(ClassMethods) + + attr_accessor :search_joins end module ClassMethods diff --git a/lib/netsuite/records/account.rb b/lib/netsuite/records/account.rb index b749f9596..f69f4b855 100644 --- a/lib/netsuite/records/account.rb +++ b/lib/netsuite/records/account.rb @@ -18,7 +18,6 @@ class Account attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/accounting_period.rb b/lib/netsuite/records/accounting_period.rb index 74a240a15..b3546974a 100644 --- a/lib/netsuite/records/accounting_period.rb +++ b/lib/netsuite/records/accounting_period.rb @@ -13,7 +13,7 @@ class AccountingPeriod record_refs :parent attr_reader :internal_id - attr_accessor :external_id, :search_joins + attr_accessor :external_id def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/assembly_component.rb b/lib/netsuite/records/assembly_component.rb index d8ab8ca8f..74fce5641 100644 --- a/lib/netsuite/records/assembly_component.rb +++ b/lib/netsuite/records/assembly_component.rb @@ -15,7 +15,6 @@ class AssemblyComponent attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) @@ -25,4 +24,3 @@ def initialize(attributes = {}) end end end - diff --git a/lib/netsuite/records/assembly_item.rb b/lib/netsuite/records/assembly_item.rb index e259617dc..e7cce6372 100644 --- a/lib/netsuite/records/assembly_item.rb +++ b/lib/netsuite/records/assembly_item.rb @@ -50,7 +50,6 @@ class AssemblyItem attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/assembly_unbuild.rb b/lib/netsuite/records/assembly_unbuild.rb index 763cb0d73..10ed66df0 100644 --- a/lib/netsuite/records/assembly_unbuild.rb +++ b/lib/netsuite/records/assembly_unbuild.rb @@ -26,7 +26,6 @@ class AssemblyUnbuild attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/cash_refund.rb b/lib/netsuite/records/cash_refund.rb index a4c9b46ab..46eb02fc8 100644 --- a/lib/netsuite/records/cash_refund.rb +++ b/lib/netsuite/records/cash_refund.rb @@ -115,7 +115,6 @@ class CashRefund attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/cash_sale.rb b/lib/netsuite/records/cash_sale.rb index 97fe2d042..04d062199 100644 --- a/lib/netsuite/records/cash_sale.rb +++ b/lib/netsuite/records/cash_sale.rb @@ -36,7 +36,6 @@ class CashSale attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/contact.rb b/lib/netsuite/records/contact.rb index c107311ca..5dc01b3f4 100644 --- a/lib/netsuite/records/contact.rb +++ b/lib/netsuite/records/contact.rb @@ -24,7 +24,6 @@ class Contact attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/credit_memo.rb b/lib/netsuite/records/credit_memo.rb index d8134113f..704a2ed54 100644 --- a/lib/netsuite/records/credit_memo.rb +++ b/lib/netsuite/records/credit_memo.rb @@ -38,7 +38,6 @@ class CreditMemo attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/currency_rate.rb b/lib/netsuite/records/currency_rate.rb index 6ed7c962d..85163e93d 100644 --- a/lib/netsuite/records/currency_rate.rb +++ b/lib/netsuite/records/currency_rate.rb @@ -21,7 +21,6 @@ class CurrencyRate attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/custom_record.rb b/lib/netsuite/records/custom_record.rb index 60fd4f1de..4a8080407 100644 --- a/lib/netsuite/records/custom_record.rb +++ b/lib/netsuite/records/custom_record.rb @@ -22,7 +22,6 @@ class CustomRecord attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/customer.rb b/lib/netsuite/records/customer.rb index 055088713..709b0b799 100644 --- a/lib/netsuite/records/customer.rb +++ b/lib/netsuite/records/customer.rb @@ -44,7 +44,6 @@ class Customer attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/customer_deposit.rb b/lib/netsuite/records/customer_deposit.rb index 089627b35..3489cd9b8 100644 --- a/lib/netsuite/records/customer_deposit.rb +++ b/lib/netsuite/records/customer_deposit.rb @@ -29,7 +29,6 @@ class CustomerDeposit attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/customer_payment.rb b/lib/netsuite/records/customer_payment.rb index e2fef1996..a8e96f8d8 100644 --- a/lib/netsuite/records/customer_payment.rb +++ b/lib/netsuite/records/customer_payment.rb @@ -28,7 +28,6 @@ class CustomerPayment attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/customer_refund.rb b/lib/netsuite/records/customer_refund.rb index 4f6398e40..e96bcd9dc 100644 --- a/lib/netsuite/records/customer_refund.rb +++ b/lib/netsuite/records/customer_refund.rb @@ -24,7 +24,6 @@ class CustomerRefund attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/deposit.rb b/lib/netsuite/records/deposit.rb index 9f1eec3f8..9110dc77a 100644 --- a/lib/netsuite/records/deposit.rb +++ b/lib/netsuite/records/deposit.rb @@ -20,7 +20,6 @@ class Deposit attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/deposit_application.rb b/lib/netsuite/records/deposit_application.rb index 536778848..2dc67b500 100644 --- a/lib/netsuite/records/deposit_application.rb +++ b/lib/netsuite/records/deposit_application.rb @@ -37,7 +37,6 @@ class DepositApplication attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/estimate.rb b/lib/netsuite/records/estimate.rb index 41e11631b..426714b80 100644 --- a/lib/netsuite/records/estimate.rb +++ b/lib/netsuite/records/estimate.rb @@ -111,7 +111,6 @@ class Estimate attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/inbound_shipment.rb b/lib/netsuite/records/inbound_shipment.rb index 380fbc7db..b636dc806 100644 --- a/lib/netsuite/records/inbound_shipment.rb +++ b/lib/netsuite/records/inbound_shipment.rb @@ -20,7 +20,6 @@ class InboundShipment attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/inventory_item.rb b/lib/netsuite/records/inventory_item.rb index a0c2cda17..d16103d9e 100644 --- a/lib/netsuite/records/inventory_item.rb +++ b/lib/netsuite/records/inventory_item.rb @@ -325,7 +325,7 @@ class InventoryItem # TODO: :translations_list, TranslationList attr_reader :internal_id - attr_accessor :external_id, :search_joins + attr_accessor :external_id def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/inventory_number.rb b/lib/netsuite/records/inventory_number.rb index 83bf2e824..0e0a84377 100644 --- a/lib/netsuite/records/inventory_number.rb +++ b/lib/netsuite/records/inventory_number.rb @@ -19,7 +19,6 @@ class InventoryNumber attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/invoice.rb b/lib/netsuite/records/invoice.rb index 085e0a096..a5c4e7213 100644 --- a/lib/netsuite/records/invoice.rb +++ b/lib/netsuite/records/invoice.rb @@ -141,7 +141,6 @@ class Invoice attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/item_fulfillment.rb b/lib/netsuite/records/item_fulfillment.rb index aa37b4546..b903c7f23 100644 --- a/lib/netsuite/records/item_fulfillment.rb +++ b/lib/netsuite/records/item_fulfillment.rb @@ -30,7 +30,6 @@ class ItemFulfillment attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/item_receipt.rb b/lib/netsuite/records/item_receipt.rb index 798b2b70c..5d92c65df 100644 --- a/lib/netsuite/records/item_receipt.rb +++ b/lib/netsuite/records/item_receipt.rb @@ -26,7 +26,6 @@ class ItemReceipt attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/job.rb b/lib/netsuite/records/job.rb index dcfb5e59f..f56da433d 100644 --- a/lib/netsuite/records/job.rb +++ b/lib/netsuite/records/job.rb @@ -29,7 +29,6 @@ class Job attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/location.rb b/lib/netsuite/records/location.rb index 3212dad9d..b7b3424d5 100644 --- a/lib/netsuite/records/location.rb +++ b/lib/netsuite/records/location.rb @@ -28,7 +28,6 @@ class Location attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/lot_numbered_inventory_item.rb b/lib/netsuite/records/lot_numbered_inventory_item.rb index 81103f88d..e5e14c301 100644 --- a/lib/netsuite/records/lot_numbered_inventory_item.rb +++ b/lib/netsuite/records/lot_numbered_inventory_item.rb @@ -243,7 +243,7 @@ class LotNumberedInventoryItem :weight_units attr_reader :internal_id - attr_accessor :external_id, :search_joins + attr_accessor :external_id def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/non_inventory_sale_item.rb b/lib/netsuite/records/non_inventory_sale_item.rb index 2d786a7d8..d274c2116 100644 --- a/lib/netsuite/records/non_inventory_sale_item.rb +++ b/lib/netsuite/records/non_inventory_sale_item.rb @@ -150,7 +150,6 @@ class NonInventorySaleItem attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/opportunity.rb b/lib/netsuite/records/opportunity.rb index 7da4f0aef..3162b81bc 100644 --- a/lib/netsuite/records/opportunity.rb +++ b/lib/netsuite/records/opportunity.rb @@ -33,7 +33,6 @@ class Opportunity attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/payroll_item.rb b/lib/netsuite/records/payroll_item.rb index 0e00b148b..3f49af3cf 100644 --- a/lib/netsuite/records/payroll_item.rb +++ b/lib/netsuite/records/payroll_item.rb @@ -17,7 +17,6 @@ class PayrollItem attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/purchase_order.rb b/lib/netsuite/records/purchase_order.rb index fe5c0d12d..7a0a55aaf 100644 --- a/lib/netsuite/records/purchase_order.rb +++ b/lib/netsuite/records/purchase_order.rb @@ -31,7 +31,6 @@ class PurchaseOrder attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/sales_order.rb b/lib/netsuite/records/sales_order.rb index 2ef43643b..b586af0e5 100644 --- a/lib/netsuite/records/sales_order.rb +++ b/lib/netsuite/records/sales_order.rb @@ -43,7 +43,6 @@ class SalesOrder attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/serialized_inventory_item_location.rb b/lib/netsuite/records/serialized_inventory_item_location.rb index 1ce57e3b0..e5ff61cf0 100644 --- a/lib/netsuite/records/serialized_inventory_item_location.rb +++ b/lib/netsuite/records/serialized_inventory_item_location.rb @@ -24,7 +24,6 @@ class SerializedInventoryItemLocation attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/service_sale_item.rb b/lib/netsuite/records/service_sale_item.rb index 5a1b361f4..0bb8e6fb2 100644 --- a/lib/netsuite/records/service_sale_item.rb +++ b/lib/netsuite/records/service_sale_item.rb @@ -34,7 +34,6 @@ class ServiceSaleItem attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/subsidiary.rb b/lib/netsuite/records/subsidiary.rb index b35c4a407..b85b47ba4 100644 --- a/lib/netsuite/records/subsidiary.rb +++ b/lib/netsuite/records/subsidiary.rb @@ -27,7 +27,6 @@ class Subsidiary attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/transfer_order.rb b/lib/netsuite/records/transfer_order.rb index db43ce630..35aae2a94 100644 --- a/lib/netsuite/records/transfer_order.rb +++ b/lib/netsuite/records/transfer_order.rb @@ -24,7 +24,6 @@ class TransferOrder attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/vendor.rb b/lib/netsuite/records/vendor.rb index caff2fbf7..93277fc6b 100644 --- a/lib/netsuite/records/vendor.rb +++ b/lib/netsuite/records/vendor.rb @@ -35,7 +35,6 @@ class Vendor attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/vendor_bill.rb b/lib/netsuite/records/vendor_bill.rb index cebd7de7e..131f42d3f 100644 --- a/lib/netsuite/records/vendor_bill.rb +++ b/lib/netsuite/records/vendor_bill.rb @@ -25,7 +25,6 @@ class VendorBill attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/work_order.rb b/lib/netsuite/records/work_order.rb index 7807047e7..8f62250f0 100644 --- a/lib/netsuite/records/work_order.rb +++ b/lib/netsuite/records/work_order.rb @@ -26,7 +26,6 @@ class WorkOrder attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id) diff --git a/lib/netsuite/records/work_order_item.rb b/lib/netsuite/records/work_order_item.rb index 0a8e5c7be..9da922a52 100644 --- a/lib/netsuite/records/work_order_item.rb +++ b/lib/netsuite/records/work_order_item.rb @@ -19,7 +19,6 @@ class WorkOrderItem attr_reader :internal_id attr_accessor :external_id - attr_accessor :search_joins def initialize(attributes = {}) @internal_id = attributes.delete(:internal_id) || attributes.delete(:@internal_id)