在Ruby中,为什么“或<statement>”必须与第一个条件在同一行?</statement>

时间:2012-10-28 19:52:16

标签: ruby compilation

@organization = Organization.where(:slug => subdomain).first 
  or raise ActiveRecord::RecordNotFound

SyntaxError (/Users/bmckim/Workspace/telvue/ion/app/controllers/application_controller.rb:36: syntax error, unexpected keyword_or, expecting keyword_end
  or raise ActiveRecord::RecordNotFound
    ^):

为什么“或条件”必须与第一个条件在同一条线上?在整个语句周围使用括号也不起作用。以下按预期工作,无论如何都可以说是更好的。

@organization = Organization.where(:slug => subdomain).first or 
  raise ActiveRecord::RecordNotFound

1 个答案:

答案 0 :(得分:2)

@organization = Organization.where(:slug => subdomain).first是一个完整的表达式,因此解析器认为这就是你的意思。如果Ruby需要表达式终止符(分号或其他),那么将or放在第二行就行了。