Ruby on rails 轨道4+;设计-用户。按问题查找
此代码:Ruby on rails 轨道4+;设计-用户。按问题查找,ruby-on-rails,ruby,select,ruby-on-rails-4,devise,Ruby On Rails,Ruby,Select,Ruby On Rails 4,Devise,此代码: 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)
User.find_by :email email_address
end
引发语法错误:
requests_controller.rb:24: syntax error, unexpected tIDENTIFIER, expecting keyword_end
此代码(在完全相同的位置/功能中实现,不改变任何其他内容)的工作方式:
显然,第二次实施是可怕的。随着用户数量的增加,它将减速并停止。但我不明白为什么第一个——应该是正确的方法——甚至不会编译
加载类时,甚至在调用方法之前,都会出现语法错误消息。不平衡的“if”/“end”没有问题,因为只更改了显示的行
我不明白为什么。我试过很多不同的方法,但都不管用
据我所知,应该没有必要发布更多的代码,但如果真的有人想要我,我会的。请注意,这不是在Desive控制器中,它只是我的其他应用程序控制器之一。但是,User.all可以工作,那么为什么User.find_甚至不编译呢
这表明它应该起作用。大量的数据表明了确切的语法。Desive必须对ActiveRecordAPI做一些非常令人惊讶的事情来全面地打破这一局面
有人知道发生了什么吗?类似这样的事情:
User.where(email: email_address).first
关于错误:参数之间没有逗号。处理好了
def getUser(email_address)
User.find_by(:email => email_address)
end
为了找到这个,我在/var/lib/gems中搜索find_by的示例,看到了以下内容:
/var/lib/gems/1.9.1/gems/devise-3.2.2/test/rails_app/app/mongoid/shim.rb
def find_by_email(email)
find_by(:email => email)
end
我不知道该如何工作,因为我甚至无法编译它-(从指南中复制语法时,您输入了一个大的错误-您将哈希(例如
电子邮件:电子邮件地址
)转换为符号和字符串(:电子邮件地址
)。请注意冒号的位置
听起来你对Ruby 1.9散列语法不太熟悉-键入
电子邮件:email\u address
是键入的快捷方式:email=>email\u address
@Sez,你遗漏了一些其他人都遗漏的东西-这是因为你的语法错误。没有其他人发现它,你没有将散列传递给s分离语句。您混合了两种类型的散列语法,而没有得到散列
User.find_by:email=>电子邮件地址
User.find_by email:email_地址
#您的:
User.find_by:email-email-address#细微错误,错误消息也很糟糕
:email是一个符号,email:是哈希中符号的语法
:-)大家看这个很开心 看起来不错。谢谢你。我还没有尝试过这个,因为我设法让find_by按如下方式工作。这与指南中的语法完全相同。第1.1.5节-Client.find\u by first name:“后进先出”
/var/lib/gems/1.9.1/gems/devise-3.2.2/test/rails_app/app/mongoid/shim.rb
def find_by_email(email)
find_by(:email => email)
end