2013-01-05 76 views
0

我對面,我所要做的的Rails 3如何找出哪些行動被觸發find_or_create

find_or_create 

where(attributes).first_or_create 

this post表明發生什麼事了。

但有件事情我一直想知道

有沒有方法來確定哪些行爲被觸發? (因爲我想顯示正確的通知,如果它創建)順便說一句。我正在使用Ruby 1.9.3

在此先感謝。

回答

0

使用__method__如果紅寶石1.9.3+

if ['new','include'].include? __method__ then 
    ... 
else 
    ... 
end 
+0

它再次你邁克爾。感謝你的回答,你能給我一些關於如何在控制器中使用它的細節嗎? – Firyn

+0

增加了更多信息。 –

+0

感謝邁克爾,現在看起來shweta的方式更短。但我會記住這一點 – Firyn

1
if Model.find_by_attributes(attributes) 
    flash[:notice] = "record found" 
else 
    Model.create(attributes) 
    flash[:notice] = "record created" 
end 
+0

謝謝。我想過如果使用其他的,但我有點有興趣找出使用'find_or_create'或'first_or_create'時的動作 – Firyn

1

我個人認爲是不使用find_or_create,而是使用查找並單獨創建,這種方式,我認爲它更清潔和可擴展。

舉個例子,如果你想在記錄創建後做更多的事情。我堅信一個方法的概念應該做的一件事情:),

所以我會寫這樣的事情

HTH

+0

我試圖按照Michael的建議使用__method__',但我對ruby和找不到解決方案。我想我可能只是用shweta的答案去。你確實有一點。謝謝 – Firyn

相關問題