diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 8a6981e6b8..b99b52a9a8 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -642,11 +642,10 @@ Rails/RedundantActiveRecordAllMethod: - 'app/models/spree/variant.rb' - 'spec/system/admin/product_import_spec.rb' -# Offense count: 4 +# Offense count: 3 # This cop supports unsafe autocorrection (--autocorrect-all). Rails/RedundantPresenceValidationOnBelongsTo: Exclude: - - 'app/models/spree/line_item.rb' - 'app/models/spree/order.rb' # Offense count: 1 diff --git a/app/models/spree/line_item.rb b/app/models/spree/line_item.rb index 74d3acdc7e..eed6741b31 100644 --- a/app/models/spree/line_item.rb +++ b/app/models/spree/line_item.rb @@ -7,8 +7,6 @@ module Spree include VariantUnits::VariantAndLineItemNaming include LineItemStockChanges - self.belongs_to_required_by_default = false - searchable_attributes :price, :quantity, :order_id, :variant_id, :tax_category_id searchable_associations :order, :order_cycle, :variant, :product, :supplier, :tax_category searchable_scopes :with_tax, :without_tax @@ -19,7 +17,7 @@ module Spree belongs_to :variant, -> { with_deleted }, class_name: "Spree::Variant" has_one :product, through: :variant has_one :supplier, through: :product - belongs_to :tax_category, class_name: "Spree::TaxCategory" + belongs_to :tax_category, class_name: "Spree::TaxCategory", optional: true has_many :adjustments, as: :adjustable, dependent: :destroy @@ -28,7 +26,6 @@ module Spree before_validation :copy_tax_category before_validation :copy_dimensions - validates :variant, presence: true validates :quantity, numericality: { only_integer: true, greater_than: -1, diff --git a/db/migrate/20240529081209_require_order_and_variant_on_line_item.rb b/db/migrate/20240529081209_require_order_and_variant_on_line_item.rb new file mode 100644 index 0000000000..8d2920147a --- /dev/null +++ b/db/migrate/20240529081209_require_order_and_variant_on_line_item.rb @@ -0,0 +1,6 @@ +class RequireOrderAndVariantOnLineItem < ActiveRecord::Migration[7.0] + def change + change_column_null :spree_line_items, :order_id, false + change_column_null :spree_line_items, :variant_id, false + end +end diff --git a/db/schema.rb b/db/schema.rb index d279b1931b..70feb4b8e7 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema[7.0].define(version: 2024_05_17_121235) do +ActiveRecord::Schema[7.0].define(version: 2024_05_29_081209) do # These are extensions that must be enabled in order to support this database enable_extension "pg_stat_statements" enable_extension "plpgsql" @@ -541,8 +541,8 @@ ActiveRecord::Schema[7.0].define(version: 2024_05_17_121235) do end create_table "spree_line_items", id: :serial, force: :cascade do |t| - t.integer "order_id" - t.integer "variant_id" + t.integer "order_id", null: false + t.integer "variant_id", null: false t.integer "quantity", null: false t.decimal "price", precision: 10, scale: 2, null: false t.datetime "created_at", precision: nil, null: false