从 belongs_to 关联中获取字段数组?

Posted

技术标签:

【中文标题】从 belongs_to 关联中获取字段数组?【英文标题】:Get array of fields from a belongs_to association? 【发布时间】:2013-07-16 06:24:27 【问题描述】:

我有一个对象用户和对象帖子。一个用户有_许多帖子,一个帖子属于_一个用户。 我可以使用如下语法访问用户的帖子:

posts = @user.posts

但是,我想生成用户拥有的帖子的 id 数组,而不是遍历每个帖子。理想情况下,我想这样做:

ids = @user.posts.id

但是,我收到一个错误,说 id 是 ActiveRecord 的无效方法--等等...

有什么方法可以巧妙地做到这一点,而不必像这样循环:

ids = []
posts = @user.posts
posts.each |post| do
   ids << post.id
end

【问题讨论】:

【参考方案1】:

Rails 为此提供了native method:

@user.post_ids

基本上,您可以使用&lt;singular association name&gt;_idspattern 引用has_many 关联的ID。

【讨论】:

这甚至比pluck(:id)更好【参考方案2】:

试试ids = posts.map(&amp;:id) or ids = posts.map|p| p.id

你也可以试试ids = posts.pluck(:id)

【讨论】:

pluck 方法是要走的路,只有你必须在帖子前添加用户ids = user.posts.pluck(:id)【参考方案3】:

您也可以使用收集。 收集返回数组。

ids = @user.posts.collect(&:id)

【讨论】:

【参考方案4】:

试试这个:

@ids = @user.posts.map|x| x.id 

希望它会有所帮助。

【讨论】:

以上是关于从 belongs_to 关联中获取字段数组?的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式获取 Rails 4 中的 belongs_to 关联的类

回调belongs_to关联rails

MySQL/PHP:如何获取列和关联数据

在 belongs_to 关联中填充外键

通过关联的belongs_to

php:如何从数字索引中获取关联数组键?