【发布时间】:2014-02-16 14:30:53
【问题描述】:
这段代码:
def getUser(email_address)
User.find_by :email email_address
end
抛出语法错误:
requests_controller.rb:24: syntax error, unexpected tIDENTIFIER, expecting keyword_end
此代码(在完全相同的位置/功能中实现而不更改任何其他内容)的工作原理:
def getUser(email_address)
users = User.all
found_user = nil
users.each do |user|
if user.email == email_address
found_user = user
break
end
end
found_user
end
显然,第二种实现方式很糟糕。随着用户数量的增加,它会变慢并停止。但我不明白为什么第一个 - 这应该是正确的方法 - 甚至不会编译。
在加载类时会出现语法错误消息,甚至在调用方法之前。不平衡的“if”/“end”没有问题,因为唯一更改的行是显示的行。
我不明白为什么。我已经尝试了很多变体,但没有一个有效。
据我所知,应该没有必要发布更多我的代码,但如果真的有人想要我,我会的。请注意,这不在设计控制器内,它只是我的其他应用程序控制器之一。但是, User.all 有效,那么为什么 User.find_by 甚至没有编译?
这个page from the ActiveRecord docs 建议它应该可以工作。大量tutorials and help pages such as this one 暗示了确切的语法。设计必须对 ActiveRecord api 做一些非常令人惊讶的事情才能全面打破这种情况。
有人知道怎么回事吗?
【问题讨论】:
标签: ruby-on-rails ruby select ruby-on-rails-4 devise