【问题标题】:Trying to create a subquery using activerecord in rails 3尝试在 rails 3 中使用 activerecord 创建子查询
【发布时间】:2011-04-01 00:42:47
【问题描述】:

我对 Rails 很陌生。谢谢你看看这个。我试图在 activerecord 中创建一个子查询。这是我的控制器中的内容。

 @vote_time = Submission.select("submissions.updated_at").where(:chosen => true).first
 @submissions = Submission.where(["submissions.created_at > ?",  @vote_time])  

我想这大概就是 sql 中的样子。

select * from submissions where submissions.created_at < (select submissions.updated_at from submissions where chosen = true limit 1)

每当我运行 activerecord 搜索时,@vote_time 都会被插入为空。我只是在叫错树吗?您不能将变量传递给数组条件吗?非常感谢您的宝贵时间。

【问题讨论】:

  • 您正在调用#first,它返回第一个提交。如果你得到 nil,那么你没有第一个查询返回的任何提交。
  • 当您进行选择时,它不会返回该列的值,它将返回一个仅填充了 updated_at 属性的提交实例。如果您在数据库中有任何符合条件的记录,您应该可以使用@vote_time.updated_at 来访问日期

标签: ruby-on-rails ruby-on-rails-3 sqlite activerecord


【解决方案1】:

您希望在返回的第一个对象上调用updated_at 属性,而不是尝试仅选择该列。因此:

@vote_time = Submission.where(:chosen => true).first.updated_at
@submissions = Submission.where(["submissions.created_at > ?",  @vote_time])

【讨论】:

  • 非常感谢。就是这样。我无法告诉你我对此有多感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-04
  • 2021-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 2013-07-28
相关资源
最近更新 更多