Ruby on rails 如何将混乱的ActiveRecord关系映射到单个ActiveRecord::Relation对象中
基本上,我想取一组典型的ActiveRecord关系,使其看起来像一个简单的关系 假设我有典型的Ruby on rails 如何将混乱的ActiveRecord关系映射到单个ActiveRecord::Relation对象中,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,基本上,我想取一组典型的ActiveRecord关系,使其看起来像一个简单的关系 假设我有典型的帖子,评论,用户,其中一篇帖子有许多评论,而评论有一个用户 现在,假设我想将以下数据放到一个视图中。(假设所有需要的数据都可以通过单个Arel语句读取) 我只想通过一个名为PostSummary的新对象通过以下方法访问它们: post_summary.title post_summary.tag_name post_summary.last_comment post_summary.last_comm
帖子
,评论
,用户
,其中一篇帖子有许多评论,而评论有一个用户
现在,假设我想将以下数据放到一个视图中。(假设所有需要的数据都可以通过单个Arel语句读取)
我只想通过一个名为PostSummary的新对象通过以下方法访问它们:
post_summary.title
post_summary.tag_name
post_summary.last_comment
post_summary.last_comment_user
到目前为止,还不太棘手。可以通过OpenStruct和一些映射来完成,但我希望PostSummary是一个只读的ActiveRecord::Relation对象,它允许您执行以下操作:
PostSummary.first.attributes #=> [title, tag_name, last_comment, last_comment_user]
PostSummary.count #=> 42
...
我相信这是可能的,需要做大量的工作,但是否已经有了一些设置来完成这项工作?按照您的建议执行似乎有点混乱。我建议把这些方法丢给装饰师。装饰器通常用于保存与视图相关的信息和方法,以避免模型膨胀
有关优秀的装饰库,请参见 您希望
postsummmary.count
是多少?发布记录?我在德雷珀周围挖了一下,但乍一看,它似乎正是我想要的。
PostSummary.first.attributes #=> [title, tag_name, last_comment, last_comment_user]
PostSummary.count #=> 42
...