Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 轨道4+;设计-用户。按问题查找_Ruby On Rails_Ruby_Select_Ruby On Rails 4_Devise - Fatal编程技术网

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