summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2014-10-16 20:13:58 -0600
committermo khan <mo@mokhan.ca>2014-10-16 20:13:58 -0600
commitd124c46292aaeb2e300d677915be2df5c48d1b9b (patch)
tree17998c038e2296089b89a0455a7c185e0097ccef /app/models
parent7a941ff842d54d1f5e39f7751ec2bb9ef695eaa4 (diff)
create a creations repository.
Diffstat (limited to 'app/models')
-rw-r--r--app/models/creation.rb4
-rw-r--r--app/models/creation/repository.rb18
-rw-r--r--app/models/user/repository.rb7
3 files changed, 21 insertions, 8 deletions
diff --git a/app/models/creation.rb b/app/models/creation.rb
index 4b4821e2..4ebe67b0 100644
--- a/app/models/creation.rb
+++ b/app/models/creation.rb
@@ -30,8 +30,4 @@ class Creation < ActiveRecord::Base
def liked_by(user)
favorites.find_or_create_by(user: user)
end
-
- def self.tagged(tag)
- includes([:user, :photos]).tagged_with([tag]).where('photos_count > 0')
- end
end
diff --git a/app/models/creation/repository.rb b/app/models/creation/repository.rb
new file mode 100644
index 00000000..35bc7a93
--- /dev/null
+++ b/app/models/creation/repository.rb
@@ -0,0 +1,18 @@
+class Creation
+ scope :tagged, ->(tag) { tagged_with([tag]).where('photos_count > 0') }
+
+ class Repository < SimpleDelegator
+ def initialize(connection = Creation)
+ @connection = connection
+ super(connection)
+ end
+
+ def tagged(tag)
+ connection.includes([:user, :photos]).tagged(tag)
+ end
+
+ private
+
+ attr_reader :connection
+ end
+end
diff --git a/app/models/user/repository.rb b/app/models/user/repository.rb
index e59c9fde..3210134a 100644
--- a/app/models/user/repository.rb
+++ b/app/models/user/repository.rb
@@ -1,14 +1,13 @@
class User
scope :artists, ->{ where('creations_count > 0').order(creations_count: :desc) }
- scope :search_by, ->(query) { query.blank? ? self.scoped : where('name like :query or email like :query', query: "#{query}%") }
+ scope :search_by, ->(query) { query.blank? ? self.all : where('name like :query or email like :query', query: "#{query}%") }
- class Repository
+ class Repository < SimpleDelegator
def initialize(connection = User)
@connection = connection
+ super(connection)
end
- delegate :all, :includes, :find, :search_by, to: :connection
-
def ordered
connection.order(creations_count: :desc)
end