基本上,我想采用一组典型的 ActiveRecord 关系,让它看起来像一个单一的、更简单的关系。
假设我有典型的Post
, Comment
,User
其中一个帖子有很多评论,评论有一个用户。
现在,假设我想将以下数据放入视图中。(假设所有需要的数据都可以通过单个 Arel 语句读取)。
post.title
post.tag.name
post.comments.last
post.comments.last.user.full_name
我想通过以下方法通过一个名为 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
...
我确信这可以通过大量工作实现,但是是否已经设置了一些东西来做到这一点?