--- /dev/null
+
+module ActiveRecord
+ class Base
+ module ActiveRecordHelper
+ def self.included(base)
+ base.extend(ClassMethods)
+ base.__send__ :include, InstanceMethods
+ end
+
+ module ClassMethods
+ def get_author_from_roles roles
+ roles.each do |role|
+ return role if role.is_a?(Author)
+ return role.author if role.is_a?(User)
+ return role.author if role.is_a?(Artist) and role.author
+ end
+ nil
+ end
+
+ def get_artist_from_roles roles
+ roles.each do |role|
+ return role.artist if role.is_a?(Author) and role.artist
+ return role.author.artist if role.is_a?(User) and role.author and role.author.artist
+ return role if role.is_a?(Artist)
+ end
+ nil
+ end
+
+ def get_admin_from_roles roles
+ roles.each do |role|
+ return role if role.is_a?(Admin)
+ end
+ nil
+ end
+
+ end
+
+ module InstanceMethods
+ private
+
+ public
+
+ def guest_role_check roles
+ true
+ end
+
+ def reader_role_check roles
+ roles = [roles] unless roles.respond_to?(:each)
+ roles.each do |role|
+ return true if role.is_a?(Author) or role.is_a?(Artist) or role.is_a?(Admin) or role.is_a?(User)
+ end
+ false
+ end
+
+ def resource_reader_role_check roles
+ roles = [roles] unless roles.respond_to?(:each)
+ roles.each do |role|
+ return true if role.is_a?(Author) or role.is_a?(Artist) or role.is_a?(Admin) or role.is_a?(User) or role.is_a?(DemandUser)
+ end
+ false
+ end
+
+ def admin_role_check roles
+ roles = [roles] unless roles.respond_to?(:each)
+ roles.each do |role|
+ return true if role.is_a?(Admin)
+ end
+ false
+ end
+
+ end
+
+ end
+ include ActiveRecordHelper
+ end
+end
+