Jes*_*ess 8 ruby activerecord ruby-on-rails
我想知道是否有一种有效的方法来组合Rails中多个ActiveRecord对象的结果.例如,我可能会对三个单独的表进行三次单独调用,并且我希望将结果组合在一起,并按公共列进行排序.
这是一个超级基本的代码示例,希望能让我的问题更容易理解:
@results1 = Table1.find(:all)
@results2 = Table2.find(:all)
@results3 = Table3.find(:all)
@combined_results_sorted_by_date_column = (how?)
Run Code Online (Sandbox Code Playgroud)
正如其他人所建议的,这是问题的一个解决方案.
@combined_results = @result1 + @result2 + @result3
@combined_results.sort! {|x,y| x.date <=> y.date}
Run Code Online (Sandbox Code Playgroud)
如果我想按日期排序,但Table3将"created_on"列作为日期引用,该怎么办?
Lar*_*eth 14
@results1 = Table1.find(:all)
@results2 = Table2.find(:all)
@results3 = Table3.find(:all)
@combined_results_sorted_by_date_column =
(@results1 + @results2 + @results3).sort_by(&:date)
Run Code Online (Sandbox Code Playgroud)
如果我想按日期排序,但Table3将"created_on"列作为日期引用,该怎么办?
class Table3
alias_method :date, :created_on
end
Run Code Online (Sandbox Code Playgroud)
或者干脆
class Table3
alias date created_on
end
Run Code Online (Sandbox Code Playgroud)
您使用的不是“表”,而是对象。
如果你这样想的话,那就没有意义了:
@results1 = Users.find(:all)
@results2 = Posts.find(:all)
@results3 = Comments.find(:all)
Run Code Online (Sandbox Code Playgroud)
它的“组合”形式意味着什么?
您可能想要的是使用不同的“查询”组合来自同类的结果。是这样吗?
| 归档时间: |
|
| 查看次数: |
8023 次 |
| 最近记录: |