2013-01-23 80 views
0

如何在我的控制器中定義運行並在URL中獲取類時執行以下操作;如何在Rails中正確地形成這個控制器?

我需要找到所有「工作」current_user我猜這樣的事情;

@joblisting = current_user.Joblisting.find(params[:id]) 

然後我需要這些工作,並檢查它們的列「job_status」有「完成」的文字在其中或其他」

如果jobs_status是‘已完成’,然後我需要運行代碼所以我做了一個「如果」

我將不得不通過計算。

@joblisting = current_user.Joblisting.find(params[:id]) 
if @joblisting.where(:project_status => "completed") 
    number_to_currency(current_user.Joblisting.where(:project_status => 'completed').sum('jobprice') * 1.60 - current_user.Joblisting.where(:project_status => 'completed').sum('jobprice')) 
    Notifier.notify_payout(current_user).deliver 
    @joblisting.project_status = 'paid' 
    @joblisting.save 
end 

這是我有什麼,我只能堅持通過計算到Notifier.notify_payout templat即

我敢肯定,誰知道鐵軌更好,那麼我會馬上看到我的錯誤。

+1

您是否聲明瞭用戶和JodListing之間的關係?關係我的意思是has_one,has_many或belongs_to?我猜你的用戶has_many JobListing,我說得對嗎? – MrYoshiji

+0

是宣佈關係。你是對的。 – user1924165

+0

Kansha,有些地方需要學習,我敢肯定它的一團糟,但我會隨着時間學習清理它或保持它的第一個地方清潔。感謝您的幫助 – user1924165

回答

0

我的答案不會給你你尋求的代碼。我這樣做是因爲我覺得你還有很多東西要學,但是我會告訴你該怎麼做,只是不給你代碼。如果你說這行代碼的作品....

@joblisting = Joblisting.where(:developer_id => current_developer[:id]) 
if @joblisting.where(:project_status => "completed") 
    Notifier.notify_payout(current_developer).deliver 
end 

然後就這樣吧。至於更新:project_status列從「完成」到「付費」,可以有多種方式來處理這個問題。您可以在您的模型中創建一個方法(我們稱之爲project_is_paid),該方法將項目狀態更改爲付費,並在成功時在notify_payout方法中聲明它。

但是,這可能會讓別人看着你的代碼感到困惑,並想知道爲什麼突然間記錄從數據庫中的「完成」變爲「付費」。另外,您必須將joblisting對象作爲參數傳遞,這更加有效。

另一種考慮它的方法是在控制器內寫一個簡單的條件語句。如果郵件已發送,請調用方法project_is_paid。只要小心不要開始將所有這些邏輯添加到控制器中,控制器應該簡明扼要。讓模型處理邏輯。

我想回到您發佈的工作控制器代碼的結尾。我敢打賭,你可以把以下兩行合二爲一。

@joblisting = Joblisting.where(:developer_id => current_developer[:id]) 
if @joblisting.where(:project_status => "completed") 

爲什麼這麼說?那麼你正在向同一張表Job Listings做兩個查詢。這裏有一點幫助,如果你不知道如何... link

如果我沒有在評論中回答你最新的問題,我很抱歉。在您的問題發佈更新,我很樂意更新我自己的答案。

+0

的帖子非常感謝你,那真是太好了。我在學習,你是對的,我有很多東西要學習,你通過從像你這樣的人那裏得到很好的評論並學習錯誤來做到這一點。該代碼有效,但它並不是一個好方法,也不是乾淨的。謝謝,我會發布,如果我找出一些東西。 – user1924165

+0

沒問題。讓我們知道結果如何,如果您遇到困難,我們可以幫助您。 – jason328

+0

我一直在撓撓頭腦,想通過閱讀您發佈的支持鏈接來縮短查詢時間,並縮短查詢時間,並且提出了這兩個問題。還沒有測試過,只是認爲我會收到你的意見; http://pastie.org/private/dke0w8xvqqscamvney8xfq – user1924165

相關問題