Added date_available_from to products, updated conditions in product.find_products_fo...
authorNeil Smith <neil.git@njae.me.uk>
Fri, 27 Feb 2009 09:55:41 +0000 (09:55 +0000)
committerNeil Smith <neil.git@njae.me.uk>
Fri, 27 Feb 2009 09:55:41 +0000 (09:55 +0000)
app/models/product.rb
app/views/products/edit.html.erb
app/views/products/index.html.erb
app/views/products/new.html.erb
app/views/products/show.html.erb
db/migrate/20090202163608_add_test_data.rb
db/migrate/20090226212213_add_date_avilable_until_to_product.rb [new file with mode: 0644]
db/migrate/20090226212307_add_more_test_data.rb [new file with mode: 0644]
db/schema.rb

index 9cc9488c6030d3a2ba776359b759115f1df07e70..27fbdabe21bba36592467e18883ed7556e0f039f 100644 (file)
@@ -9,7 +9,7 @@ class Product < ActiveRecord::Base
   
   def self.find_products_for_sale
     find(:all, 
-      :conditions => "date_available <= now()",
+      :conditions => "date_available <= now() and (date_available_until is null or date_available_until >= now())",
       :order => :title)
   end
   
index 18efd5543223585e1f8042fb30fea317ca08ab4a..ce912cc0d5fa9f5bbb5edf70a30c5e9e55b238d2 100644 (file)
     <%= f.label :date_available %><br />
     <%= f.date_select :date_available, :order => [:day, :month, :year] %>
   </p>
+  <p>
+    <%= f.label :date_available_until %><br />
+    <%= f.date_select :date_available_until, :order => [:day, :month, :year], :include_blank => true %>
+  </p>
   <p>
     <%= f.submit "Update" %>
   </p>
index 3e068e6697479b9aa50cf8223096c4bb23567a05..1bed0399ad8347e978c810128e7d7cea163b02d5 100644 (file)
           <% else %>
             <dd class="unavailable">Available from <%= product.date_available %></dd>
           <% end %>
+          <% if not product.date_available_until.nil? %> 
+            <% if product.date_available_until.future? %>
+              <dd>Available until <%= product.date_available_until %></dd>
+            <% else %>
+              <dd class="unavailable">Unavailable since <%= product.date_available_until %></dd>
+            <% end %>
+          <% end %>
         </dl>
       </td>
 
index 9eac9ae2ef1ed723c9c91d4c7f6a29c480e3f68a..339feb84c9ac3f589fa0dde0229f2d1bae05367c 100644 (file)
     <%= f.label :date_available %><br />
     <%= f.date_select :date_available, :order => [:day, :month, :year] %>
   </p>
+  <p>
+    <%= f.label :date_available_until %><br />
+    <%= f.date_select :date_available_until, :order => [:day, :month, :year], :include_blank => true %>
+  </p>
   <p>
     <%= f.submit "Create" %>
   </p>
index fb3631e331d8ba8c51461de4f457f0493fd742e3..5fc752ff6b6227a50608a82b241760fd7fb94c7d 100644 (file)
   <%=h @product.date_available %>
 </p>
 
+<p>
+  <b>Available until:</b>
+  <%=h @product.date_available_until %>
+</p>
 
 <%= link_to 'Edit', edit_product_path(@product) %> |
 <%= link_to 'Back', products_path %>
index 35a0a7a12380a48298424322357c7443c8d7e002..0bf4e82e13dfd8e0468b079f4447b4fa9aacf48d 100644 (file)
@@ -29,7 +29,7 @@ class AddTestData < ActiveRecord::Migration
           </p>
         },
       :image_url => '/images/daisy.gif',
-      :price => 5.00,
+      :price => 4.99,
       :date_available => Time.utc(2011, 7, 1)
       )
       
@@ -57,7 +57,7 @@ class AddTestData < ActiveRecord::Migration
           </p>
         },
       :image_url => '/images/can-of-air.jpg',
-      :price => 5000.00,
+      :price => 4999.95,
       :date_available => Time.utc(2009, 1, 1)
       )
   end
diff --git a/db/migrate/20090226212213_add_date_avilable_until_to_product.rb b/db/migrate/20090226212213_add_date_avilable_until_to_product.rb
new file mode 100644 (file)
index 0000000..bfc90e5
--- /dev/null
@@ -0,0 +1,10 @@
+class AddDateAvilableUntilToProduct < ActiveRecord::Migration
+  def self.up
+    add_column :products, :date_available_until, :date
+    Product.reset_column_information
+  end
+
+  def self.down
+    remove_column :products, :date_available_until
+  end
+end
diff --git a/db/migrate/20090226212307_add_more_test_data.rb b/db/migrate/20090226212307_add_more_test_data.rb
new file mode 100644 (file)
index 0000000..d91721b
--- /dev/null
@@ -0,0 +1,31 @@
+class AddMoreTestData < ActiveRecord::Migration
+  def self.up
+    Product.create(:title => 'Rainbow',
+      :description => 
+        %{<p>What could be better than a beautiful rainbow to brighten up your 
+             day?  Experience the wonder of light and water in all its glory.
+          </p>
+          <p>Due to metreological variations, the rainbow you receive may 
+             differ slightly from the one shown here.
+          </p>
+          <p>(Terminal gold not included.)
+          </p>
+        },
+        :image_url => '/images/rainbow.jpg',
+        :price => 17.99,
+        :date_available => Time.utc(2008, 12, 31),
+        :date_available_until => Time.utc(2009, 1, 1)
+#        :available_until => 'fred'
+#        :au => Time.utc(2008, 12, 31)
+    )
+
+    box = Product.find(3)
+    box.update_attribute(:date_available_until, Time.utc(2010, 7, 1))
+#    box.update_attribute(:available_until, 'tom')
+#    box.update_attribute(:au, Time.utc(2010, 7, 1))
+  end
+
+  def self.down
+    Product.delete_all(["title = ?", 'Rainbow'])
+  end
+end
index dc43da5de54f34fcd243a564cfbc366706819b38..d08e7634e294f0a2b0177146d693ca64884585cd 100644 (file)
@@ -9,7 +9,7 @@
 #
 # It's strongly recommended to check this file into your version control system.
 
-ActiveRecord::Schema.define(:version => 20090202163608) do
+ActiveRecord::Schema.define(:version => 20090226212307) do
 
   create_table "products", :force => true do |t|
     t.string   "title"
@@ -17,8 +17,19 @@ ActiveRecord::Schema.define(:version => 20090202163608) do
     t.string   "image_url"
     t.datetime "created_at"
     t.datetime "updated_at"
-    t.decimal  "price",          :precision => 8, :scale => 2, :default => 0.0
+    t.decimal  "price",                :precision => 8, :scale => 2, :default => 0.0
     t.date     "date_available"
+    t.date     "date_available_until"
   end
 
+  create_table "sessions", :force => true do |t|
+    t.string   "session_id", :null => false
+    t.text     "data"
+    t.datetime "created_at"
+    t.datetime "updated_at"
+  end
+
+  add_index "sessions", ["session_id"], :name => "index_sessions_on_session_id"
+  add_index "sessions", ["updated_at"], :name => "index_sessions_on_updated_at"
+
 end