具有自己的属性和关联对象ID的Rails ActiveRecords

强力原子

我有一个非常简单的ActiveRecords关联,例如(特别是在Rails 4中):

  • 一个组织有很多用户
  • 用户属于组织

但是就ActiveReocord查询而言,构造查询以返回一个组织数组的最佳方式是什么,每个组织都具有与之关联的自己的用户ID数组?基本上,我想返回以下数据结构:

#<ActiveRecord::Relation [#<Organization id: 1, name: "org name",.... user_ids: [1,2,3]>, <Organization id: 2...>]>

...或进一步将其提取为JSON:

[{id: 1, name: 'org name', ... user_ids: [1,2,3]}, {...}]

其中users不是组织表的一部分,而只是ActiveRecord动态构造的属性。

提前致谢。


编辑:尝试了几件事之后,我想出了一些以我想要的格式返回结果的东西。但是我仍然不确定(也不确信)这是否是最佳查询:

Organization.joins(:users).select("organizations.*, '[#{User.joins(:organization).pluck(:id).join(',')}]' as user_ids").group('organizations.id')

或者,@ Kien Thanh提出的JBuilder / Rabl方法似乎非常合理且易于使用。如今,这是否被视为当前基于Rails API开发的最佳实践(该应用程序的后端和前端部分完全分离)?

克里斯·罗比森

对于诸如JBuilder的库解决方案,唯一要注意的Rabl是在构建json时观察性能。

至于查询,请使用includes而不是joins拉回数据。

orgs = Organization.includes(:users)

您不必以这种方式对结果进行分组(除非分组是为了某个汇总值)。

ActiveRecord::Relation为您提供了一些自动辅助方法,其中之一是association_ids

因此,如果您通过哈希创建自己的JSON,则可以

orgs.map! {|o| o.attributes.merge(user_ids: o.user_ids).to_json }

编辑:忘记为http://guides.rubyonrails.org/association_basics.html#has-many-association-reference添加参考has_many

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

保存一个ActiveRecords对象数组

来自分类Dev

ActiveRecords Rails中的多联接优化

来自分类Dev

Rails 4:ActiveRecords无法从JSON保存数据

来自分类Dev

通过Yii和ActiveRecords使用内存缓存

来自分类Dev

如何按时间在rails中订购多个ActiveRecords?

来自分类Dev

ActiveRecords搜索带有两个参数

来自分类Dev

如何通过Ruby on Rails上ActiveRecords上的关联在has_many:上处理数据?

来自分类Dev

比较不同ActiveRecords上的关联,而无需从数据库中获取

来自分类Dev

在Rails中创建Activerecords对象的三种方法中哪一种最好?为什么要选择一个而不是另一个呢?

来自分类Dev

在Yii中处理关系式ActiveRecords的最佳方法

来自分类Dev

PG :: NotNullViolation:错误:空值,但该值是通过ActiveRecords设置的

来自分类Dev

具有嵌套关联和组的Rails查询(按关联对象)

来自分类Dev

具有模型关联的Rails json对象

来自分类Dev

在具有自己属性的对象属性上使用getter和setter

来自分类Dev

Rails - 销毁具有条件的对象的关联

来自分类Dev

基本 Java MVC:Beans 和具有属性的关联实体

来自分类Dev

具有方法和自己返回的对象

来自分类Dev

如果关联具有限制子句,则关联关系属性上的 Rails 总和不正确

来自分类Dev

Ruby on Rails也会找到一个关联的对象,该对象也具有另一个关联

来自分类Dev

Ruby on Rails也会找到一个关联的对象,该对象也具有另一个关联

来自分类Dev

关联对象相关属性的复杂Rails验证

来自分类Dev

Rails:创建具有经过验证的属性的值对象

来自分类Dev

合并具有相同属性的Rails对象

来自分类Dev

Rails SQL查找所有关联具有列表ID的位置

来自分类Dev

AttributeError:与User.password_hash关联的'InstrumentedAttribute'对象和'Comparator'对象均没有属性'count'

来自分类Dev

查找具有多个ID属性的域对象?

来自分类Dev

如何遍历不具有id属性的对象列表

来自分类Dev

如何在Rails中显示具有多对多关联的特定属性

来自分类Dev

设计:为什么JavaScript具有单独的Function和Object对象,为什么它们具有自己的独立原型对象?

Related 相关文章

  1. 1

    保存一个ActiveRecords对象数组

  2. 2

    ActiveRecords Rails中的多联接优化

  3. 3

    Rails 4:ActiveRecords无法从JSON保存数据

  4. 4

    通过Yii和ActiveRecords使用内存缓存

  5. 5

    如何按时间在rails中订购多个ActiveRecords?

  6. 6

    ActiveRecords搜索带有两个参数

  7. 7

    如何通过Ruby on Rails上ActiveRecords上的关联在has_many:上处理数据?

  8. 8

    比较不同ActiveRecords上的关联,而无需从数据库中获取

  9. 9

    在Rails中创建Activerecords对象的三种方法中哪一种最好?为什么要选择一个而不是另一个呢?

  10. 10

    在Yii中处理关系式ActiveRecords的最佳方法

  11. 11

    PG :: NotNullViolation:错误:空值,但该值是通过ActiveRecords设置的

  12. 12

    具有嵌套关联和组的Rails查询(按关联对象)

  13. 13

    具有模型关联的Rails json对象

  14. 14

    在具有自己属性的对象属性上使用getter和setter

  15. 15

    Rails - 销毁具有条件的对象的关联

  16. 16

    基本 Java MVC:Beans 和具有属性的关联实体

  17. 17

    具有方法和自己返回的对象

  18. 18

    如果关联具有限制子句,则关联关系属性上的 Rails 总和不正确

  19. 19

    Ruby on Rails也会找到一个关联的对象,该对象也具有另一个关联

  20. 20

    Ruby on Rails也会找到一个关联的对象,该对象也具有另一个关联

  21. 21

    关联对象相关属性的复杂Rails验证

  22. 22

    Rails:创建具有经过验证的属性的值对象

  23. 23

    合并具有相同属性的Rails对象

  24. 24

    Rails SQL查找所有关联具有列表ID的位置

  25. 25

    AttributeError:与User.password_hash关联的'InstrumentedAttribute'对象和'Comparator'对象均没有属性'count'

  26. 26

    查找具有多个ID属性的域对象?

  27. 27

    如何遍历不具有id属性的对象列表

  28. 28

    如何在Rails中显示具有多对多关联的特定属性

  29. 29

    设计:为什么JavaScript具有单独的Function和Object对象,为什么它们具有自己的独立原型对象?

热门标签

归档