2010-06-10 41 views
1

我正在查找URL爲「http://」的所有組織,並將其屬性更新爲「」。在IRB中編寫一個簡單的條件語句

我嘗試:

Organization(:all).select { |o| o.url = "http://" ? o.update_attribute("url","")} 

它返回一個編譯錯誤:

SyntaxError: compile error 
(irb):2: syntax error, unexpected '}' 
    from (irb):2 

任何想法?

回答

2

嘗試使用update_all

Organization.update_all("url = ''", ["url =?",'http://']) 
+0

輝煌。我不知道如何使用這樣的條件。非常非常感謝你。 – Trip 2010-06-10 19:35:22

+0

你正在嘗試的方式可以這樣完成: 組織(:all).select {| o | o.update_attribute(「url」,「」)如果o.url ==「http://」} 您正在使用的三元運算符('?')在此之後期待一個':'和第二個條件。但它遇到了一個'}',所以引發了一個錯誤。 – Garfield 2010-06-10 19:43:50

+0

@上坡:好的回答.. – bragboy 2010-06-11 05:18:38

0

我絕不是一個紅寶石專家,但我的第一個懷疑是你使用賦值運算符(=)而不是等號運算符(==)。快速谷歌搜索「ruby irb條件」似乎證明了這一點。

而且您可能因爲沒有在您的問題中包含編譯錯誤而得到反對票。如果我的猜測是錯誤的,我甚至無法幫助解釋錯誤信息,因爲您沒有提供它。

更新:根據對答案的第一個評論,我相信我的第一個懷疑是錯的 - 錯誤地解釋了代碼行的意圖。但是,那麼當錯誤消息不可用時就會發生這種情況。

UPDATE2:第一條評論不存在...也許它已被刪除或也許我開始在錯誤的地方打字...

+0

感謝@atk。我正在讀這篇文章。試過了雙等號操作符。相同的編譯錯誤。我想這是我的語法。儘管如此,我很欣賞幫助。 – Trip 2010-06-10 19:31:41