2013-07-21 2 views
0

하루에 한 번 게시물을 확인하기 위해 유효성 검사를 만들려고합니다. 00 시부 터 시작하는 24 시간입니다. Rails에서 어떻게이 작업을 수행 할 수 있습니까?하루에 하나의 게시물을 확인하려면 어떻게합니까?

다음 작업을 수행했지만 어디에서 today 메서드를 넣을지 잘 모르겠습니다. 더 단순한 대안을 많이 부탁드립니다.

def today 
    where(:created_at => (Time.now.beginning_of_day..Time.now)) 
end 

나는 다음 문서 모델에 유효성 검사를 추가 :

validate :time_limit, :on => :create 

등처럼 같은 모델에서 time_limit 정의 :

def time_limit 
if user.articles.today.count >= 1 
errors.add(:base, "Exceeds daily limit") 
end 

그러나 나는 "어떤 방법"을 받고 없습니다 유지 생성 작업에서 오류가 발생했습니다.

undefined method `today' 

이 방법을 어디에 넣어야할지 모르겠습니다.

답변

2

당신은 그것을 위해 범위를 사용 갈까요 : today 모델의 인스턴스 메소드가 아닌 범위이기 때문에

class Article 
    scope :today, -> { where(:created_at => (Time.now.beginning_of_day..Time.now.end_of_day)) } 
end 

http://apidock.com/rails/ActiveRecord/NamedScope/ClassMethods/scope

+0

난 후 지금까지 자정에서뿐만 아니라 하루 종일 생성 여부를 확인하는 것이 좋습니다. 이 방법으로 범위를 재사용 할 수 있습니다 (예 : 오늘의 게시물) –

+0

죄송합니다. 조금 더 설명 할 수 있습니까? 나는 당신이 의미하는 것을 정말로 이해하지 못합니다. – Joshua

+1

@Joshua 당신이 Michael에게 묻고 있다면, 나는 이미 그의 제안을 적용했다. 그는 Time.now.end_of_day 대신 Time.now를 사용하는 것이 좋습니다. 그렇게하면 다른 경우에도이 범위를 다시 사용할 수 있습니다. – gvalmon

0

그 오류입니다. 당신이 필요로하는 무엇

scope입니다 :

scope :today, lambda{ where(:created_at => (Time.now.beginning_of_day..Time.now)) } 
관련 문제