summaryrefslogtreecommitdiff
path: root/app/models
diff options
context:
space:
mode:
authormo khan <mo@mokhan.ca>2015-01-18 16:23:52 -0700
committermo khan <mo@mokhan.ca>2015-01-18 16:23:52 -0700
commit78ace004ac4f67aa666f32d6bcfc69071c7009bd (patch)
tree2f639f70d3450aa1d10cd31463203933af5da5d3 /app/models
parent44ffb735056d225c784da087af8cf3eb72ebfeb9 (diff)
parent0473be2b027b8cea7e8619cd48d012efa3e993d1 (diff)
Merge branch 'master' of github.com:cakeside/cakeside into active-job
Diffstat (limited to 'app/models')
-rw-r--r--app/models/category.rb6
-rw-r--r--app/models/creation.rb2
-rw-r--r--app/models/creation/repository.rb4
-rw-r--r--app/models/photo.rb1
4 files changed, 9 insertions, 4 deletions
diff --git a/app/models/category.rb b/app/models/category.rb
index 34f643ca..c98e64a8 100644
--- a/app/models/category.rb
+++ b/app/models/category.rb
@@ -1,6 +1,10 @@
class Category < ActiveRecord::Base
has_many :creations
- default_scope -> { order(:name) }
+ default_scope -> { order(:slug) }
+
+ scope :by_slug, ->(category) do
+ find_by(slug: category.downcase.parameterize)
+ end
def to_param
slug
diff --git a/app/models/creation.rb b/app/models/creation.rb
index 901e2db1..d576803d 100644
--- a/app/models/creation.rb
+++ b/app/models/creation.rb
@@ -1,7 +1,7 @@
class Creation < ActiveRecord::Base
validates :name, presence: true
validates :category_id, presence: true
- belongs_to :user, :counter_cache => true
+ belongs_to :user, counter_cache: true
belongs_to :category
has_many :photos, -> { order :created_at }, dependent: :destroy, as: :imageable
has_many :favorites, :dependent => :destroy
diff --git a/app/models/creation/repository.rb b/app/models/creation/repository.rb
index cbf0c7fd..9ebd7885 100644
--- a/app/models/creation/repository.rb
+++ b/app/models/creation/repository.rb
@@ -1,7 +1,7 @@
class Creation
include Queryable
scope :tagged, ->(tag) { tagged_with([tag]).where('photos_count > 0') }
- scope :published, ->() { unscoped.distinct.includes(:user, :photos).joins(:photos).where('photos.image_processing' => nil) }
+ scope :published, ->{ joins(:photos).where(photos: { image_processing: nil }) }
scope :search, ->(query) { where(["UPPER(creations.name) LIKE :query OR UPPER(creations.story) LIKE :query", { query: "%#{query.upcase}%" }]) }
class Repository < SimpleDelegator
@@ -29,7 +29,7 @@ class Creation
def search_filters_for(params)
[
->(cakes) { cakes.published },
- ->(cakes) { params[:category].blank? ? cakes.all : cakes.where(category: Category.find_by(slug: params[:category].downcase)) },
+ ->(cakes) { params[:category].blank? ? cakes.all : cakes.where(category: Category.by_slug(params[:category])) },
->(cakes) { params[:q].blank? ? cakes.all : cakes.search(params[:q]) },
->(cakes) { cakes.order(created_at: sort(params)) },
->(cakes) { params[:tags].blank? ? cakes.all : cakes.tagged(params[:tags].downcase.parameterize) },
diff --git a/app/models/photo.rb b/app/models/photo.rb
index f4df5f41..a7be2acb 100644
--- a/app/models/photo.rb
+++ b/app/models/photo.rb
@@ -1,5 +1,6 @@
class Photo < ActiveRecord::Base
belongs_to :imageable, polymorphic: true, counter_cache: true, touch: true
+ scope :processed, ->{ where(image_processing: nil) }
def url_for(version_key, asset_host = ENV['ASSET_HOST'])
versions.find { |version| version.for?(version_key) }.url_for(asset_host)