Rails ActiveRecord:从具有相同列名的多个表中获取

Jsh*_*523 5 activerecord ruby-on-rails ruby-on-rails-4

我有一个简单的用例:

用户有许多推文Tweet属于User

我正在尝试采用两个表中存在的列名.例如:

@tweets = Tweet.includes(:user).all.pluck(:created_at)
Run Code Online (Sandbox Code Playgroud)

每个表都有一个created_at列,但上面的结果返回tweet的created_at.我怎样才能拔出用户的created_at?

我的解决方法是在下面使用连接并选择:

@tweets = Tweet.joins(:user).select("users.created_at AS created_date").all
Run Code Online (Sandbox Code Playgroud)

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

Pav*_*van 13

你可以在下面做

@tweets = Tweet.includes(:user).all.pluck(:created_at, "users.created_at")
Run Code Online (Sandbox Code Playgroud)

而且也.all没有必要这里joins/includes获取所有记录/相关的记录.所以最终的查询将如下所示

@tweets = Tweet.includes(:user).pluck(:created_at, "users.created_at")
Run Code Online (Sandbox Code Playgroud)