Rails 5 - 如何从数组转换为activerecord关系?

时间:2017-12-15 12:00:42

标签: ruby-on-rails arrays ruby activerecord

在rails 5中,我编写了一个类似User.where("id = #{current_user.id}").include_associations.order(created_at: :desc)

的查询

这会返回[#<User id: 15, name: "Shruthi", ...>]等列表。

如何在此处仅获取activerecord数据(不需要数组)? 我想要一个像#<User id: 15, name: "Shruthi", ...>

这样的列表

4 个答案:

答案 0 :(得分:1)

如果您只想要当前用户的关联,并且您已正确设置'has_many',则可以执行...

current_user.associations.order(created_at: :desc)

这将为您提供所有关联记录,并且(当然)可以直接从当前用户获得idname等current_user信息。

这将是一个ActiveRecord :: Relation,您可以迭代它,是的,它的行为就像一个数组。如果你想要所有列表,你需要一个数组或类似数组的结构。

答案 1 :(得分:0)

您有两种选择。

  1. .first添加到查询中。

  2. 使用User.find(current_user.id)...

答案 2 :(得分:0)

您也需要列表,然后您必须迭代数组

users = User.where("id = #{current_user.id}").include_associations.order(created_at: :desc)
users.each do |user|
  #user is activerecord data here
end

答案 3 :(得分:0)

这里有一个替代方案,例如 -

 user_array = User.where("id = #{current_user.id}").include_associations.order(created_at: :desc)
active_record_of_users = User.where(id: user_array.map(&:id))