当前位置: 首页 > 知识库问答 >
问题:

Ruby on rails-where子句在关系上产生“undefined method”错误

邹锦
2023-03-14

我有一个模型Email_addressbelongs_to用户。在我的用户模型中,它说has_manyemail_addresses。考虑以下控制台输出:

irb(主):073:0

电子邮件地址加载(0.4ms)选择email_addresses。*从email_addresses哪里email_addresses.id=2限制1

=

irb(主):074:0

用户加载(0.1ms)选择用户。*来自用户位置users.id=2 LIMIT 1

=

irb(主):075:0

电子邮件地址加载(0.1ms)选择email_addresses。*从email_addressesemail_addresses.email=r@example.com

=

irb(主):076:0

NoMethodError:from/var/lib/gems/1.8/gems/activerecord-3.2.11/lib/active_record/relation/delegation的未定义方法用户。rb:45:in“method_missing”from(irb):76

有人能告诉我为什么当我使用where()时我无法定位用户,但当我使用find()时它可以工作吗?这是非常令人困惑的输出。

共有1个答案

夏侯星洲
2023-03-14

. where()返回一个数组(特别是ActiveRecord::Relation)。要选择返回的对象,您需要指定哪个对象。在这种情况下,因为您需要一个对象,所以您可以这样做:

b = EmailAddress.where(:email => "r@example.com").first

b = EmailAddress.where(:email => "r@example.com")[0]
 类似资料:
  • 问题内容: 我有这个查询: 但是我想做这样的事情: 如何检查电子邮件是否存在?我要使用电子邮件,如果此字段为空,我要使用email2。我该如何完成? 问题答案: 用于选择字段,然后在其后放置该子句:

  • 问题内容: 我正在运行的查询如下,但是出现此错误: #1054-‘IN / ALL / ANY子查询’中的未知列’guaranteed_postcode’ 我的问题是:为什么我不能在同一数据库查询的where子句中使用伪列? 问题答案: 您只能在GROUP BY,ORDER BY或HAVING子句中使用列别名。 标准SQL不允许您在WHERE子句中引用列别名。之所以施加此限制,是因为执行WHERE

  • 本章提供了有关如何使用JDBC应用程序从表中选择记录的示例。 这将在从表中选择记录时使用WHERE子句添加其他条件。 在执行以下示例之前,请确保您具备以下示例 - 要执行以下示例,您可以使用实际用户名和密码替换用户名和密码。 您的MySQL或您正在使用的任何数据库已启动并正在运行。 所需的步骤 (Required Steps) 使用JDBC应用程序创建新数据库需要以下步骤 - Import the

  • 使用Query DSL和hibernate(Spring Data JPA)构建查询,如下所示 这里的逻辑很简单:如果有一个与某个人关联的银行帐户,则按银行ID过滤结果。 实体具有一个,它包含整数值。实体可能具有也可能没有

  • 在oracle数据库上似乎有很多查询语法来获取数据,这里我只想问一下运行良好的查询,但我完全不明白。查询如下: 从上面的查询来看,它的工作很好。但是我不明白为什么会有TO_DATE('01/01/197000:00:00','mm/dd/yyyy hh24:mi:ss和(create_date/(60*60*24)),'mm/dd/yy hh24:mi:ss') 有人能解释一下吗? 提前致谢

  • 我正在尝试使用criteriaBuilder和谓词构建一个SQL where子句,以创建一些SQL语句,如: AND或对列表周围的括号对于将它们与不存在分开很重要。这是因为和有优先权我得到的是 我可以构建所有谓词,没有问题,但我不知道如何让它在AND或PAIRES列表中添加括号 AND或OR对的列表是这样构建成1个谓词列表的 子查询是这样添加的 还有地点 每个AND或AND对周围的括号也一样好