2013-06-15 2 views
0

두 개의 타임 스탬프, Last_visited 및 Last_modified를 기록하는 Feed라는 모델이 있습니다.두 날짜를 비교할 범위 만들기

내가 피드의 목록을 렌더링 할 위치 LAST_MODIFIED> last_visited

나는 현재 내 모델이 범위가 있습니다

scope :hottest, lambda {where("'last_modified' > ?", 'last_visited')} 

컨트롤러

def home 
    @user = current_user 
    @feeds = @user.feeds 
end 

을 그리고 난 보기의 링크를 다음과 같이 렌더링 :

%ol 
    - @feeds.hottest.each do |feed| 
    %li 
     = render :partial => 'feeds/feed_link' 
(210)

여기 내 서버 로그 (나는 포스트 그레스를 사용하고 있습니다) 렌더링 작업은 다음과 같습니다

Feed Load (0.4ms) SELECT "feeds".* FROM "feeds" WHERE "feeds"."user_id" = 1 AND ('last_modified' > 'last_visited') 

예상대로 나는 데이터베이스에 하나 개의 항목이 곳 LAST_MODIFIED> last_visited, 아직 내보기에 렌더링하지 않습니다 있습니다

Foofeed 
Last Modified 2013-06-15 01:08:27 UTC 
Last Visited 2013-06-15 01:05:32 UTC 

이것이 작동하지 않는 이유에 대해 조금 의아해합니다.

어떤 통찰력이나 대안적인 접근법도 크게 감사하겠습니다.

답변

0

scope :hottest, lambda {where("'last_modified' > ?", last_visited)}

+0

저에게이 있습니다 그NameError'정의되지 않은 지역 변수 또는 메소드 'last_visited'for # ' – cupcakekid

+0

'last_visited' 선언을 보여줄까요? 서버 로그에서 last_modified를 last_visited (날짜 대신 문자열)와 비교하는지 확인할 수 있습니다. last_visited를 올바르게 호출해야합니다. 보십시오'self.last_visited' – shinnyx

+0

아니, 아직도 행운. 이것이 올바른 접근인지 궁금합니다. 수업에 여는 것이 더 효과적일까요? – cupcakekid

0

그냥 할보십시오 : 여기

scope :hottest, lambda {where("last_modified > last_visited")} 

내 모델 User에 대한 예입니다

콘솔에서
scope :updated, lambda { where("updated_at > created_at").limit(1) } 
scope :not_updated, lambda { where("updated_at = created_at").limit(1) } 

가 :

1.9.3p194 :004 > User.updated 
    User Load (1.4ms) SELECT "users".* FROM "users" WHERE (updated_at > created_at) LIMIT 1 
=> [#<User id: 7, first_name: "Test1", last_name: "Test1", created_at: "2013-05-21 21:29:54", updated_at: "2013-06-15 00:09:12">] 
1.9.3p194 :005 > User.not_updated 
    User Load (1.3ms) SELECT "users".* FROM "users" WHERE (updated_at = created_at) LIMIT 1 
=> [#<User id: 14, first_name: "Test2", last_name: "Test2", created_at: "2013-05-22 20:07:27", updated_at: "2013-05-22 20:07:27">] 
+0

작동하지 않습니다. 서버 로그에서 : '피드로드 (0.4ms) SELECT "피드"* "피드"에서 "피드" "user_id"= 1 AND (마지막으로 수정 한> last_visited)' – cupcakekid

+0

어떻게 대답 했는가? (attr_accessible 중'created_at'과'updated_at'가 없다는 것을 주목하십시오). 그것이 당신을 위해 작동하지 않는다면, 더 이상 당신을 도울 수 없습니다, 미안 해요. – trushkevich

관련 문제