diff options
| author | mo khan <mo@mokhan.ca> | 2015-01-18 16:23:52 -0700 |
|---|---|---|
| committer | mo khan <mo@mokhan.ca> | 2015-01-18 16:23:52 -0700 |
| commit | 78ace004ac4f67aa666f32d6bcfc69071c7009bd (patch) | |
| tree | 2f639f70d3450aa1d10cd31463203933af5da5d3 /app/models | |
| parent | 44ffb735056d225c784da087af8cf3eb72ebfeb9 (diff) | |
| parent | 0473be2b027b8cea7e8619cd48d012efa3e993d1 (diff) | |
Merge branch 'master' of github.com:cakeside/cakeside into active-job
Diffstat (limited to 'app/models')
| -rw-r--r-- | app/models/category.rb | 6 | ||||
| -rw-r--r-- | app/models/creation.rb | 2 | ||||
| -rw-r--r-- | app/models/creation/repository.rb | 4 | ||||
| -rw-r--r-- | app/models/photo.rb | 1 |
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) |
