Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何将混乱的ActiveRecord关系映射到单个ActiveRecord::Relation对象中_Ruby On Rails_Ruby_Activerecord - Fatal编程技术网

Ruby on rails 如何将混乱的ActiveRecord关系映射到单个ActiveRecord::Relation对象中

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

基本上,我想取一组典型的ActiveRecord关系,使其看起来像一个简单的关系

假设我有典型的
帖子
评论
用户
,其中一篇帖子有许多评论,而评论有一个用户

现在,假设我想将以下数据放到一个视图中。(假设所有需要的数据都可以通过单个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
...