Ruby on rails開發從頭來(windows)(十二)-訂單(Order)

在上次的內容裡,我們建立了訂單的Model,和表示頁面,這次繼續編寫CHECKOUT的處理。1.在checkout.rhtml的頁面上,有一個CHECKOUT按鈕,上次還沒有給它編寫處理代碼,現在在store_controller中添加save_order方法,代碼如下:def save_order@cart = find_cart@order = Order.new(params[:order])@order.line_items <<@cart.itemsif

Ruby on rails開發從頭來(windows)(十一)-訂單(Order)

在上次的內容裡,我們實現了清空購物車和金額的格式化處理。這次實現訂單的模組。1.首先,我們要在資料庫裡建立Order表,建立表的Sql如下:create table orders (id int not null auto_increment,name varchar(100) not null,email varchar(255) not null,address text not null,pay_type char(10) not null,primary key

Ruby on rails開發從頭來(windows)(十)-清空購物車和格式化金額

在上次的內容裡,我們給購物車添加了錯誤處理,這次來實現清空購物車和金額的格式化處理。到現在我們還沒有給顯示購物資訊列表頁面的“empty cart”連結添加任何處理。我們首先來實現這個功能:1.在Store_Control.rb檔案中添加empty_cart方法:def empty_cartfind_cart.empty!flash[:notice] = 'Your cart is now empty'redirect_to(:action =>

Ruby on rails開發從頭來(windows)(九)-給購物車添加錯誤處理

在上次的內容裡,我們示範了怎樣構建一個簡單的購物車,這次的內容非常簡單,給購物車添加錯誤處理。對於Web系統來說,並發處理是一個無法迴避的問題,我們來模仿一個並發衝突的情景:1.使用者進入購物車頁面,看到共有5種商品。2.管理員在後台維護商品列表,將5種商品中的一種刪除掉。3.客戶選中被刪除掉的商品,添加到購物車。在這種情況下,如果不作任何處理的話將會產生一個異常,而我們要作的,是處理這個異常,給使用者顯示一個商品不存在的錯誤提示。1.首先我們需要修改StoreController的add_to

Ruby on rails開發從頭來(windows)(八)-使用Session建立購物車

在前面的內容裡,我們示範了怎樣構建一個商品的列表,這次,我們在前面內容的基礎上,構建一個簡單的購物車。1.首先我們要來建立一個儲存客戶購物資訊的表:資料庫指令碼:drop table if exists line_items;create table line_items (id int not null auto_increment,product_id int not null,quantity int not null default 0,unit_price decimal(10,2)

Ruby on rails開發從頭來(windows)(七)-建立線上購物頁面

在上一篇隨筆中,我們為Products建立了一個維護用的列表頁面,效果如圖:這次我們使用上面維護的Products列表來建立一個終端使用者使用的購物頁面。1.建立控制器(Controller),命名為store,我們通過命令列來建立它:depot> ruby script/generate controller Store index開啟...rails_apps\depot\app\controllers目錄下的store_controller.rb檔案,向其中添加代碼:def

Ruby on rails開發從頭來(windows)(六)-美化你的列表頁面

在上一篇隨筆中,我們給Products的建立頁面添加了輸入驗證,今次的內容非常簡單,來稍稍美化下Products的列表頁面。1.開啟app\views\admin\list.rhtml檔案,可以看到下面的代碼<h1>Listing products</h1>  <table> <tr> <% for column in Product.content_columns %>  <th><%=

Ruby on rails開發從頭來(windows)(五)-對輸入進行驗證

在上一篇隨筆中,我們完成了對一個表Product的添刪查改的操作,你一定注意到了,我們還沒有添加任何驗證,例如Price,我們可以隨意輸入任何字元,而不會有錯誤提示。這次,我們就來看看怎樣添加驗證輸入功能。1.開啟depot\app\models目錄下的product.rb檔案,向其中添加代碼,如下:class Product < ActiveRecord::Base   validates_presence_of :title, :description, :image_urlend2.

Ruby on rails開發從頭來(五十八)- ActiveRecord基礎(自關聯)

或許存在這樣的情況,在一個表中,一條記錄關聯到表中的另一條記錄,例如,公司中的每個僱員都有上級和下級,而他們同時又是僱員,在Rails中你可以這樣使用Employee類:class Employee < ActiveRecord::Basebelongs_to :manager,:class_name => "Employee",:foreign_key => "manager_id"belongs_to

Ruby on rails開發從頭來(五十七)- ActiveRecord基礎(多對多關聯關係)

在Rails中多對多關聯通過在關聯表對應的類中聲明has_and_belongs_to_many來實現。在資料庫中,多對多關聯使用中間表來實現,表中包括關聯表的主鍵,Active

Ruby on rails開發從頭來(五十五)- ActiveRecord基礎(一對一關聯關係)

一對一關聯,或者更正確的說是一對零或一對一關聯,是通過外鍵引用到另外一張表中的至多一條記錄實現的,下圖描述了orders表和invoices表的關係:在Active Record中,要表示這樣的關係需要在Order類中添加has_one:Invoice聲明,並且同時在Invoice類中添加聲明belongs_to:order,事實上,我們可以把這種關聯關係看作是相互的,我們可以使Invoice有一個Order,也可以使Order有一個Invoice,不同的是,在將Object Storage

Ruby on rails開發從頭來(五十四)- ActiveRecord基礎(指定關聯關係)

Rails支援三種表間關聯關係,一對一,一對多,多對多,你需要在Model中加入聲明來標識這些關聯:has_one,has_many,belongs_to,has_and_belongs_to_many。一對一關聯關係可能存在於象訂單和發票這樣的關係,一個訂單只能有一個發票,在Rails中,我們這樣指明:class Order < ActiveRecord::Basehas_one :invoice. . .class Invoice <

Ruby on rails開發從頭來(五十三)- ActiveRecord基礎(表關聯)

很多程式使用的資料庫都包含有多個表,而且通常一些表之間還有關聯關係,訂單常含有多個條目,而一個條目又關聯到一種商品,一個商品可能又屬於多個商品分類,一個商品分類裡又包含有多個不同的商品。在資料庫中,這些關聯表現為使用主索引值把表關聯起來,也就是外鍵,但是這屬於底層的範疇,我們需要處理Model對象間的關聯,而不是資料庫中的列和鍵。如果一個訂單含有多個條目,我們需要有辦法來維持,處理它們的關係,如果一個條目引用到一種商品,我們或許想這樣做:price =

Ruby on rails開發從頭來(五十一)- ActiveRecord基礎(並發處理)

在學習Rails中的並發處理的處理前,我們先簡單瞭解下並發處理的概念。在有多個處理同時訪問同一個資料庫的應用程式中,可能會出現這樣的情況,因為一個處理更新了資料庫中的行,而使得另一個處理中持有的資料變得陳舊了。例如,A和B先後從資料庫中提取了相同的資料,並都做了修改,這時B先將自己的修改更新會資料庫,稍後,A將自己的修改更新回資料庫,這時將會覆蓋B所作的修改,當B再次提取資料庫後,看到的是A修改的結果,而不是自己的。一個解決辦法就是將更新的表或者行進行鎖定,防止其他程式進行更新或者訪問,鎖定可以

Ruby on rails開發從頭來(五十)- ActiveRecord基礎(更新記錄)

前面瞭解了檢索的方法,這次來看看Active Record怎樣更新資料庫中的記錄。如果你有一個Active Record對象(或許對應於order表),你可以通過調用save方法將它寫道資料庫中去,如果這個對象是先前從資料庫中讀取出來的,save方法將會更新既有的記錄,否則將會建立一條記錄。如果一條既有記錄被更新,Active Record將會用它的主鍵和來匹配記憶體中的對象,Active Record對象中的屬性被更新到對應的列,即使一個列中的值沒有變化也會被更新,在下面的例子中,id為123

Ruby on rails開發從頭來(四十九)- ActiveRecord基礎(行數和再載入資料)

Active Record提供了兩個方法來擷取合格記錄的條數:count()和count_by_sql()。例如:c1 = Order.countc2 = Order.count(["name = ?", "Dave Thomas"])c3 = LineItem.count_by_sql("select count(*) " +" from line_items, orders " +" where

Ruby on rails開發從頭來(四十八)- ActiveRecord基礎(動態查詢)

資料庫上最常啟動並執行查詢莫過於根據指定條件返回符合的結果集,查詢可能是返回所有名字為‘dave’的訂單,或者是某個部落格上所有標題含Rails的post,在很多其他的架構和程式設計語言中,你需要建立sql來執行查詢,Active Record利用了ruby語言所包含的動態能力來做這些事。例如,我們的Order Model包含了諸如name,email,address這樣的屬性,我們可以使用這些名字對應的find方法來查詢,例如:order =

Ruby on rails開發從頭來(四十七)- ActiveRecord基礎(強大的find方法)

現在我們知道如何指定條件,現在我們來看看find方法支援的一些其他設定。首先,理解find(:first,…)方法是非常重要的,該方法在同樣的conditions設定下,和find(:all,…)方法產生同樣的sql語句,不同之處僅在於只返回一條記錄。在調用的時候,一種的參數為:first,另一種為:all。find方法執行一個select

Ruby on rails開發從頭來(四十六)- ActiveRecord基礎(SQL和Active Record)

想象一下Active Record是如何處理SQL的,我們來看看find方法的:conditions參數,調用的時候像這樣:find(:all,:conditions=>…),這裡的:conditions參數決定了find方法將返回哪些記錄,它相當於Sql語句的where部分,例如,要擷取所有的名字為Dave,pay_type為po的訂單,我們這樣寫:pos = Order.find(:all,:conditions => "name = 'dave'

總頁數: 85 1 .... 54 55 56 57 58 .... 85 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.