Rails 4:将两个数据库变量合并为一个条件语句以进行显示

瑟夫·科尔多瓦诺(Seph Cordovano)

我想这是一个设计问题:

我有一个显示用户朋友的故事(状态)的应用程序。这些朋友还将照片发布到我想合并到同一索引的相册中。如果索引的项目(状态或图片)是图片.each,则可以通过语句设置显示,然后类似地使用状态,但使用不同的显示。因此,我必须能够区分页面上的两者,但我需要将两者结合起来,然后按排序created_at,类似于facebook的墙式供稿。

在我的控制器中,我已经传入了变量

@statuses = Status.order('created_at desc')
@pictures = Picture.order('created_at desc') 

然后在我看来(缩小版)

@pictures.each do |picture|
...do one thing...
end 

@statuses.each do |status|
...do something different...
end

我该如何在同一视图中同时渲染@statuses和@pictures并基于created_at字段对其进行排序,但同时使用自己的显示来显示它们呢?

瑟夫·科尔多瓦诺(Seph Cordovano)

经过进一步的研究,我使用在SO上找到的这种“ hack / together /解决方案”

它使用:

@combinedfeed = (Status.all + Picture.all).sort{|a,b| b.created_at <=> a.created_at }

这是降序排列的。切换.all以根据需要进行限制。

然后,我会在每个数据库中添加一列,默认情况下是否为类型,这对我个人而言将在我们计划的一些更新中派上用场。将它们添加到相应的表中:

add_column :pictures, :feedtype, :string, :default => "image"
add_column :statuses, :feedtype, :string, :default => "status"

然后,在视图中,我执行以下操作:

@combinedfeed.each do |value|
  if value.feedtype == "image"
    ...place content for picture loop here, replacing picture with value
  ie ->old:  if signed_in? && (current_user == picture.user)
       new:  if signed_in? && (current_user == value.user) 
  end
  elsif value.feedtype == "status"
    ...place content for picture loop here replacing status with value
  end
end

希望这可以帮助其他人。我确信这不是最佳解决方案性能,但可以完成工作。如果有人有更好的解决方案来达到相同的结果,并且可以在高流量站点上更好地处理,请分享!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

rails将两个搜索合并为一个,以显示两个结果

Rails如何显示与两个数据库的关联

将两个字段合并为一个,用于Rails

在Rails中,如何将这两个不同的has_manys合并为一个?

Rails登录并使用devise从两个数据库表进行身份验证

使用Ransack和Rails 4将多个搜索表单结果合并为一个

在Rails5中,如何返回两个范围的并集或将它们合并为一个?

如何从一个数据库中提取数据,进行操作,然后将其插入Rails中的另一个数据库中?

在同一个Bucket Searchkick Ruby on Rails中过滤两个数据

共享同一数据库Rails的两个应用程序

将两个数据库合并为第三个数据库

如何在rails 3中将两个活动记录关系与OR条件合并,并且返回结果也是一个活动关系而不是数组?

如何将 3 个数据库列表合并为一个并将其显示在 ListView 上;

Ruby on Rails - 仅将数据库查询限制为一个结果

Rails更新对象创建两个数据库事务

将两个条件合并为一个

将两个if条件合并为一个

Rails:将多个选项合并为一个字符串

在单个Rails应用程序中使用两个neo4j数据库

将两个字典合并为一个数据框

熊猫将两个数据序列合并为一个序列

将两个数据帧合并为一个,同时保留原始行号

rails:rails的条件4

合并Rails中两个表中的数据

如何将两个数据帧中的行合并为 R 中的一个数据帧?

具有相同数据库的两个Rails应用程序?

使用变量的两个属性进行 Rails 验证

如何将两个 Laravel Eloquent 查询合并为一个(所以我访问了数据库一次而不是 2 次)

Rails 4 SQLite3 :: ReadOnlyException:尝试编写一个只读数据库