Commit 4d49df8b

mo k <mo@mokhan.ca>
2012-10-28 03:58:23
mark the first photo uploaded as the primary image.
1 parent b79a38e
app/controllers/creations_controller.rb
@@ -2,7 +2,7 @@ class CreationsController < ApplicationController
   before_filter :authenticate_user!, :except => [:show, :index]
   # GET /creations
   def index
-    @creations = Creation.where(:is_restricted => false, :is_published => true).page(params[:page]).per(16)
+    @creations = Creation.where(:is_restricted => false).page(params[:page]).per(16)
   end
 
   # GET /creations/1
app/controllers/photos_controller.rb
@@ -18,6 +18,7 @@ class PhotosController < ApplicationController
   def create
     attributes = params[:photo]
     attributes[:image] = params[:photo][:image].first if params[:photo][:image].class == Array
+    attributes[:is_primary] = !@creation.photos.any?
 
     @photo = @creation.photos.build(attributes)
     if @photo.save
app/models/creation.rb
@@ -21,7 +21,11 @@ class Creation < ActiveRecord::Base
   end
 
   def primary_image
-    photos.where(:is_primary => true).first
+    if photos.any?
+      photos.where(:is_primary => true).first
+    else
+      Photo.new
+    end
   end
 
   def migrate_primary_image
db/schema.rb
@@ -29,18 +29,18 @@ ActiveRecord::Schema.define(:version => 20121013031725) do
   add_index "active_admin_comments", ["resource_type", "resource_id"], :name => "index_admin_notes_on_resource_type_and_resource_id"
 
   create_table "admin_users", :force => true do |t|
-    t.string   "email",                  :default => "", :null => false
-    t.string   "encrypted_password",     :default => "", :null => false
+    t.string   "email",                                 :default => "", :null => false
+    t.string   "encrypted_password",     :limit => 128, :default => "", :null => false
     t.string   "reset_password_token"
     t.datetime "reset_password_sent_at"
     t.datetime "remember_created_at"
-    t.integer  "sign_in_count",          :default => 0
+    t.integer  "sign_in_count",                         :default => 0
     t.datetime "current_sign_in_at"
     t.datetime "last_sign_in_at"
     t.string   "current_sign_in_ip"
     t.string   "last_sign_in_ip"
-    t.datetime "created_at",                             :null => false
-    t.datetime "updated_at",                             :null => false
+    t.datetime "created_at",                                            :null => false
+    t.datetime "updated_at",                                            :null => false
   end
 
   add_index "admin_users", ["email"], :name => "index_admin_users_on_email", :unique => true
@@ -55,8 +55,8 @@ ActiveRecord::Schema.define(:version => 20121013031725) do
 
   create_table "categories", :force => true do |t|
     t.string   "name"
-    t.datetime "created_at", :null => false
-    t.datetime "updated_at", :null => false
+    t.datetime "created_at"
+    t.datetime "updated_at"
     t.string   "slug"
   end
 
@@ -80,8 +80,8 @@ ActiveRecord::Schema.define(:version => 20121013031725) do
   create_table "creations", :force => true do |t|
     t.string   "name"
     t.text     "story"
-    t.datetime "created_at",                       :null => false
-    t.datetime "updated_at",                       :null => false
+    t.datetime "created_at"
+    t.datetime "updated_at"
     t.integer  "user_id"
     t.string   "image"
     t.boolean  "is_restricted", :default => false, :null => false
@@ -113,8 +113,8 @@ ActiveRecord::Schema.define(:version => 20121013031725) do
   create_table "favorites", :force => true do |t|
     t.integer  "user_id"
     t.integer  "creation_id"
-    t.datetime "created_at",  :null => false
-    t.datetime "updated_at",  :null => false
+    t.datetime "created_at"
+    t.datetime "updated_at"
   end
 
   create_table "interests", :force => true do |t|
@@ -126,8 +126,8 @@ ActiveRecord::Schema.define(:version => 20121013031725) do
   create_table "photos", :force => true do |t|
     t.integer  "creation_id"
     t.string   "image"
-    t.datetime "created_at",                     :null => false
-    t.datetime "updated_at",                     :null => false
+    t.datetime "created_at"
+    t.datetime "updated_at"
     t.boolean  "is_primary",  :default => false
   end
 
@@ -163,18 +163,18 @@ ActiveRecord::Schema.define(:version => 20121013031725) do
   end
 
   create_table "users", :force => true do |t|
-    t.string   "email",                  :default => "", :null => false
-    t.string   "encrypted_password",     :default => "", :null => false
+    t.string   "email",                                 :default => "", :null => false
+    t.string   "encrypted_password",     :limit => 128, :default => "", :null => false
     t.string   "reset_password_token"
     t.datetime "reset_password_sent_at"
     t.datetime "remember_created_at"
-    t.integer  "sign_in_count",          :default => 0
+    t.integer  "sign_in_count",                         :default => 0
     t.datetime "current_sign_in_at"
     t.datetime "last_sign_in_at"
     t.string   "current_sign_in_ip"
     t.string   "last_sign_in_ip"
-    t.datetime "created_at",                             :null => false
-    t.datetime "updated_at",                             :null => false
+    t.datetime "created_at"
+    t.datetime "updated_at"
     t.string   "name"
     t.string   "website"
     t.string   "twitter"