diff --git a/app/models/spree/role.rb b/app/models/spree/role.rb new file mode 100644 index 0000000000..2d2877d77f --- /dev/null +++ b/app/models/spree/role.rb @@ -0,0 +1,5 @@ +module Spree + class Role < ActiveRecord::Base + has_and_belongs_to_many :users, join_table: 'spree_roles_users', class_name: Spree.user_class.to_s + end +end diff --git a/config/initializers/user_class_extensions.rb b/config/initializers/user_class_extensions.rb new file mode 100644 index 0000000000..de8743a11d --- /dev/null +++ b/config/initializers/user_class_extensions.rb @@ -0,0 +1,25 @@ +Spree::Core::Engine.config.to_prepare do + if Spree.user_class + Spree.user_class.class_eval do + include Spree::Core::UserBanners + has_and_belongs_to_many :spree_roles, + :join_table => 'spree_roles_users', + :foreign_key => "user_id", + :class_name => "Spree::Role" + + has_many :spree_orders, :foreign_key => "user_id", :class_name => "Spree::Order" + + belongs_to :ship_address, :class_name => 'Spree::Address' + belongs_to :bill_address, :class_name => 'Spree::Address' + + # has_spree_role? simply needs to return true or false whether a user has a role or not. + def has_spree_role?(role_in_question) + spree_roles.where(:name => role_in_question.to_s).any? + end + + def last_incomplete_spree_order + spree_orders.incomplete.where(:created_by_id => self.id).order('created_at DESC').first + end + end + end +end