我在铁轨2工作..我有一个疑问。
在我的应用程序中,我有3个模型,如
博客,维基,媒体
我正在尝试使用@final创建一个数组,其中包含我的应用程序下发布的所有博客,wiki,medias。
我试过
@blogs = Blog.all
@wikis = Wiki.all
@medias = Media.all
@final = []
@final << @blogs << @wikis << @medias
上面的最终数组中有3个数组..
但是我希望用3个模型返回的对象保留最终数组
怎么做? 请提出建议
编辑
我试过的是
@final = []
@blogs = Blog.all
@wikis = Wiki.all
@medias = Media.all
@final = @blogs + @wikis + @medias
这正是我所需要的......但它只列出了所有的博客,媒体和维基。如何根据特定对象的创建日期列出所有实体
答案 0 :(得分:5)
你使用的是错误的操作符,你想要这个:
@final = @blogs + @wikis + @medias
数组的<<
operator:
将给定对象推送到此数组的末尾。
返回通过将两个数组连接在一起以生成第三个数组而构建的新数组。
如果由于某种原因你真的被<<
所附加,你也可以使用flatten
:
@final = (@final << @blogs << @wikis << @medias).flatten
但这有点无意义。如powerMicha所述,如果您不想修改任何<<
,则需要使用@final
(或某些临时数组)启动@blogs
链。 @wikis
或@medias
数组。
就排序而言,您可以使用sort_by!
:
@final.sort_by(&:created_at)
假设您在对象上使用了通常的created_at
方法。
答案 1 :(得分:2)
返回一个新数组,该数组是此数组的一维展平 (递归的)。
答案 2 :(得分:2)
使用<<
,您将数组放入数组中。这与:
@final = [@blogs, @wikis, @medias]
我建议 mu太短加入数组的答案
@final = @blogs + @wikis + @medias
请参阅API