jay*_*jay 8 mysql ruby-on-rails ruby-on-rails-3
这是从多个不同的Rails模型创建"提要"的后续操作.在这个问题中,tadman建议使用这种方法从三个模型(Ticket,Post,Report)创建最近项目的用户Feed:
@items = [ Ticket, Post, Report ].inject([ ]) do |a, with_class|
a + with_class.find(:all, :limit => 10, :order => 'created_at DESC')
end.sort_by(&:created_at).reverse[0, 10]
Run Code Online (Sandbox Code Playgroud)
他认为这是一种有效的方法,但这并不一定是最有效的方法.他建议的另一种方法是"创建一个与各种记录具有多态关联的索引表".
我真的很想学习更多有关这种替代解决方案的信息,它似乎更有效,更优雅.谁能告诉我怎么会这样做?让我们使用上一个问题中相同的背景信息作为基础.
我曾经做过的,有一个单独的模型Feed(feeds_controller)并在after_save回调中更新它到所有interesting模型.例如,如果你有一个模型文章,有一个after_save回调:
def after_save
feed = Feed.new
feed[:model_name] = 'Article'
feed[:item_id] = id
feed.save
end
Run Code Online (Sandbox Code Playgroud)
然后,您可以像任何其他模型一样线性访问Feed.保存Feed时会产生计算费用,而不是从Feed中读取.
哦,您还可以拥有Feed has_many :article; has_many :user, has_many :status等等,然后:include是Feed中的所有资源,并在视图中呈现它们.希望这是有道理的;-)
| 归档时间: |
|
| 查看次数: |
1168 次 |
| 最近记录: |