2010-06-10 80 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