Объединить 2 модели данных и упорядочить их по общему столбцу? - PullRequest
1 голос
/ 07 июня 2011

У меня есть 2 модели, которые меня интересуют, чтобы объединить, а затем упорядочить их по столбцу созданного_ката. Одна из моделей - это фотографии, а другая - статусы. В настоящее время у меня есть две вкладки, фотографии и статусы, в которых я по отдельности отображаю все данные модели к моменту их создания. Однако я хочу сделать еще одну вкладку под названием «Фотографии и статусы» и отображать их вместе. Мой вопрос заключается в том, как я могу отобразить их обоих к тому времени, когда они были созданы вместе. Например, я бы хотел, чтобы порядок был примерно таким:

Hell World (status posted 4 hours ago)
<img src="blah/blah" /> (posted 6 hours ago)
Hello (status posted 8 hours ago)

Есть предложения? Заранее спасибо

Ответы [ 2 ]

1 голос
/ 07 июня 2011

Вероятно, есть какой-то хитрый способ сделать это в SQL, но если вы отображаете только несколько записей, делать это в Ruby хорошо и доступно для чтения.Что-то вроде:

@photos = Photo.recent(5)
@images = Image.recent(5)
@both   = (@photos + @images).sort_by(&:created_at).reverse

Если ваша цель - показать классический канал активности, я рекомендую плагин timeline_fu:

https://github.com/jamesgolick/timeline_fu

Очень легко настроить,довольно гладко.

0 голосов
/ 07 июня 2011

Вы можете просто добавить оба в массив, а затем отсортировать:

@merged = (@statuses.all + @photos.all).sort_by! {|o| o.created_at }
...