【问题标题】:Rails ActiveRecord: Pluck from multiple tables with same column nameRails ActiveRecord:从具有相同列名的多个表中提取
【发布时间】:2015-10-23 16:01:35
【问题描述】:

我有一个简单的用例:

用户有很多推文 推文属于用户

我正在尝试提取两个表上都存在的列名。例如:

@tweets = Tweet.includes(:user).all.pluck(:created_at)

每个表都有一个 created_at 列,但上面的结果返回了该推文的 created_at。我怎样才能同时提取用户的 created_at?

我的解决方法是使用连接和选择:

@tweets = Tweet.joins(:user).select("users.created_at AS created_date").all

那么我怎样才能通过使用 pluck 来做到这一点呢?

【问题讨论】:

  • 试试@tweets = Tweet.includes(:user).all.pluck(:created_at, "users.created_at")
  • 嘿伙计,谢谢!不知道为什么我没有早点尝试...
  • 你试过了吗:tweet = Tweet.includes(:user).all.pluck("user.created_at")
  • @JérémyButtice 嘿 Jeremy,这就是我最初尝试过的,但应该是复数“users.created_at”

标签: ruby-on-rails ruby-on-rails-4 activerecord


【解决方案1】:

您可以执行以下操作

@tweets = Tweet.includes(:user).all.pluck(:created_at, "users.created_at")

这里也不需要.all,因为joins/includes 获取所有记录/相关记录。所以最终的查询如下所示

@tweets = Tweet.includes(:user).pluck(:created_at, "users.created_at")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-03-30
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多