「last_visited」フィールドと「last_modified」フィールドを含む Feeds というレコードがあります。どちらもタイムスタンプです。
last_modified > last_visited のすべてのフィードのビューでリストをレンダリングしようとしています。
私は現在これを持っています:
コントローラ
@feeds = @user.feeds
@feeds_hot = @feeds.where(['@feeds.last_modified > ?', @feeds.last_visited])
私はここで軌道から外れていると感じています。これを行うためにモデルクラスも使用する必要がありますか?
どんな助けでも大歓迎です。
編集:
これが私のモデルです
class Feed < ActiveRecord::Base
attr_accessible :feed_id, :feed_url, :last_modified, :title, :url, :last_visited, :user_id
belongs_to :user
scope :hottest, lambda {where('last_modified > ?', :last_visited)}
def fetch_feed!
feed = Feedzirra::Feed.fetch_and_parse(feed_url) # probably want some eror handling here
self.title = feed.title
self.url = feed.url
self.last_modified = feed.last_modified
self.last_visited = feed.last_modified
self #or nil if you like
end
def self.check_for_update(feed)
fetched_feed = Feedzirra::Feed.fetch_and_parse(feed.feed_url)
entry = fetched_feed.entries.first
feed.last_modified = entry.published
end
def update_visit_date!
date = Time.now
update_attribute(:last_visited, date)
self
end
end
編集
更新されたコード
コントローラ
def home
@user = current_user
@feeds = @user.feeds
@feeds_hot = @feeds.hottest
end
モデル
attr_accessible :feed_id, :feed_url, :last_modified, :title, :url, :last_visited, :user_id
belongs_to :user
scope :hottest, lambda {where("'last_modified' > ?", 'last_visited')}
意見
%ol.feeds.feeds_hot
- @feeds_hot.each do |feed|
%li.feed.hot[feed]
= render :partial => 'feeds/feed_link', :locals => {:feed => feed}
残念ながら、次のデータを含むフィードがある場合でも、ビューにホット フィードが表示されません。
Last Modified 2013-06-14 23:49:07 UTC
Last Visited 2013-06-14 23:47:55 UTC
Last Modified は Last Visited よりも数時間長い