Module: Spree::UserMethods

Extended by:
ActiveSupport::Concern
Includes:
UserAddressBook, UserApiAuthentication, UserPaymentSource, UserReporting
Included in:
LegacyUser
Defined in:
app/models/concerns/spree/user_methods.rb

Instance Method Summary collapse

Methods included from UserPaymentSource

#default_credit_card, #drop_payment_source, #payment_sources

Methods included from UserAddressBook

#bill_address=, #bill_address_attributes=, #default_address=, #default_address_attributes=, #mark_default_address, #persist_order_address, #remove_from_address_book, #save_in_address_book, #ship_address=

Methods included from UserReporting

#average_order_value, #lifetime_value, #order_count

Methods included from DisplayMoney

#money_methods

Methods included from UserApiAuthentication

#clear_spree_api_key, #clear_spree_api_key!, #generate_spree_api_key, #generate_spree_api_key!

Instance Method Details

#auto_generate_spree_api_keyObject



39
40
41
42
43
44
45
# File 'app/models/concerns/spree/user_methods.rb', line 39

def auto_generate_spree_api_key
  return if !respond_to?(:spree_api_key) || spree_api_key.present?

  if Spree::Config.generate_api_key_for_all_roles || (spree_roles.map(&:name) & Spree::Config.roles_for_auto_api_key).any?
    generate_spree_api_key!
  end
end

#has_spree_role?(role_in_question) ⇒ Boolean

has_spree_role? simply needs to return true or false whether a user has a role or not.

Returns:

  • (Boolean)


35
36
37
# File 'app/models/concerns/spree/user_methods.rb', line 35

def has_spree_role?(role_in_question)
  spree_roles.any? { |role| role.name == role_in_question.to_s }
end

#last_incomplete_spree_order(store: nil, only_frontend_viewable: true) ⇒ Spree::Order

since the customer’s last complete order.

Returns:

  • (Spree::Order)

    the most-recently-created incomplete order



49
50
51
52
53
54
55
56
57
# File 'app/models/concerns/spree/user_methods.rb', line 49

def last_incomplete_spree_order(store: nil, only_frontend_viewable: true)
  self_orders = orders
  self_orders = self_orders.where(frontend_viewable: true) if only_frontend_viewable
  self_orders = self_orders.where(store: store) if store
  self_orders = self_orders.where('updated_at > ?', Spree::Config.completable_order_updated_cutoff_days.days.ago) if Spree::Config.completable_order_updated_cutoff_days
  self_orders = self_orders.where('created_at > ?', Spree::Config.completable_order_created_cutoff_days.days.ago) if Spree::Config.completable_order_created_cutoff_days
  last_order = self_orders.order(:created_at).last
  last_order unless last_order.try!(:completed?)
end

#total_available_store_creditObject



59
60
61
# File 'app/models/concerns/spree/user_methods.rb', line 59

def total_available_store_credit
  store_credits.reload.to_a.sum(&:amount_remaining)
end