我正在使用 rails 2.. 我有疑问。
在我的应用程序中,我有 3 个模型,例如
博客、维基、媒体
我正在尝试创建一个类似@final 的数组,其中包含在我的应用程序下发布的所有博客、维基和媒体。
我试过
@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
这正是我所需要的.. 但它只是列出了所有的博客、媒体和维基。如何根据特定对象的创建日期列出所有实体
最佳答案
您使用了错误的运算符,您想要这个:
@final = @blogs + @wikis + @medias
<<
operator对于数组:
Pushes the given object on to the end of this array.
而 +
operator :
Returns a new array built by concatenating the two arrays together to produce a third array.
你也可以使用 flatten
如果你真的喜欢<<
出于某种原因:
@final = (@final << @blogs << @wikis << @medias).flatten
但这有点毫无意义。如 powerMicha 所述,您需要启动 <<
用 @final
链接(或一些临时数组)如果你不想修改任何 @blogs
, @wikis
, 或 @medias
数组。
就排序而言,您可以使用 sort_by!
:
@final.sort_by(&:created_at)
假设您有通常的 created_at
对象上的方法。
关于ruby-on-rails - 如何从 rails 中的许多模型创建所有对象的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6758921/