self.abstract_class = true
# ClassMethods
- def self.mylist_where me
- ''
+ def self.owner_model
+ nil
end
- def self.mylist_order
- ''
+ def self.owner_type
+ :author
end
- def self.himlist_where anybody
- ''
- end
-
- def self.himlist_order
- ''
- end
-
- def self.mylist me, page = 1, page_size = self.default_page_size
- self.where(self.mylist_where(me)).includes(self.list_opt).order(self.mylist_order).offset((page -1) * page_size).limit(page_size)
- end
-
- def self.himlist anybody, page = 1, page_size = self.default_page_size
- self.where(self.himlist_where(anybody)).includes(self.list_opt).order(self.mylist_order).offset((page -1) * page_size).limit(page_size)
+ def self.content?
+ true
end
- def self.mylist_paginate me, page = 1, page_size = self.default_page_size
- Kaminari.paginate_array(
- Array.new(self.where(self.mylist_where(me)
- ).includes(self.list_opt).count, nil)).page(page).per(page_size)
+ def self.operator operators
+ case self.owner_type
+ when :author
+ operators.author
+ when :artist
+ operators.artist
+ else
+ nil
+ end
end
- def self.himlist_paginate anybody, page = 1, page_size = self.default_page_size
- Kaminari.paginate_array(
- Array.new(self.where(self.himlist_where(anybody)
- ).includes(self.list_opt).count, nil)).page(page).per(page_size)
+ def self.owner_column
+ self.owner_type.to_s + '_id'
end
def self.edit content_id, operators
#InstanceMethods
+ def owner_model
+ self.class.owner_model ? self.__send__(self.class.owner_model.item_name) : self
+ end
+
def visible? operators
super
- return true if self.own?(operators)
+ return true if owner_model.own?(operators)
true
end
def own? operators
- return false unless operators.author
- self.author_id == operators.author.id
+ operator = self.class.operator operators
+ return false unless operator
+ owner_model.attributes[self.class.owner_column] == operator.id
end
end