2013-12-13 15 views
0

我正在創建一個定製的「立即購買」頁面,該頁面是用戶,地址,銷售,SaleLine和付款模式的組合。要啓動付款流程,我需要在回叫中指定銷售ID。所以我#NEW方法看起來是這樣的......在Rails中,你是否需要小心創建太多的模塊?

# new 
def bitcoin 
    require 'cgi' 
    @payment_to_tender = get_cost 

    @sale = Sale.create 

    begin 
    payment = create_new_payment_wallet(ENV["BITCOIN"], "http://www.example.com/a/b", @sale.id) 
    end 
end 

所以關鍵線,還有就是創建一個新的銷售記錄中。此頁面不需要任何類型的登錄或任何內容(因爲它是技術上的註冊頁面)。這會是一個問題嗎?我認爲,即使機器人導航到頁面,它也會產生另一個銷售記錄。這會最終趕上我嗎?我是否應該每晚運行一個腳本,刪除比一天早的所有孤兒銷售記錄,或者我應該嘗試不同的算法?

+0

我倒是第一次問題1關於Sale.create如何有效。但除此之外,不,通常不應通過GET請求創建模型。使用POST:'post'/ bitcoin'=>'controller#action''。你會有兩個動作。一個用於初始化表單,另一個用於管理表單請求(通常是POST)。 –

+0

Sale.create僅用於設置它的id,在該模型上沒有任何驗證,其中的大部分字段只是基於SaleLines的計算,所以我不希望遇到任何有效性問題。我想我現在可能會將這個過程分爲兩個視圖,第一個是創建用戶和購買細節的表單,第二個只是顯示他們在發貨前需要匯款的臨時比特幣地址。也許經過一些重構後,我可以得到這個更傳統的... – Lenskin

+0

這是一個問題。在成功交易完成之前,即使在提交表單之前,您也正在創建銷售。你是對的,那會導致一張充滿無價值數據的臃腫桌子。交易處理完成後創建交易。 –

回答

1

要求

模型只是.rb,當你調用ActiveRecord的打開文件Rails可以處理多達車型,他們不是應用程序或任何超級資源密集型

然而,他們代表遠遠不只是打開一個文件。你真正的問題問的是「我的模式設置是否正確?」,這是一個不同的球賽


ActiveRecord的關聯設定

Rails是「object orientated」,這意味着一切你必須解決一個對象。這通常是一個ActiveRecord Object,它由數據庫查詢&相關數據組成

Rails應用程序最大的問題之一是ActiveRecord關聯結構的低效使用。 工作通過定義你的模型「關係」,讓您撥打一個數據&自動附上的對象

的問題及其相關的數據對於大多數人來說是ActiveRecord的關聯設定拿起他們不需要的數據,導致不必要的昂貴數據庫調用這是問題出現在哪裏,是你想怎麼解決


創建獨立唱片

如果你想創建另一個記錄,你可以使用after_create方法,像這樣的:

#app/models/bitcoin.rb 
Class BitCoin < ActiveRecord::Base 
    after_create :create_sale 
end 

這實際上創造銷售紀錄的你,如果它的正確與

相關問題