class Rate < ActiveRecord::Base
attr_accessible :image_id, :rate, :user_id
belongs_to :image
belongs_to :user
validate :user_can_rate_after_one_day
before_save :default_values
def default_values
self.rate ||=0
end
protected
def user_can_rate_after_one_day
r=Rate.where(:image_id =>image_id, :user_id=> user_id).order("created_at DESC").limit(1)
if((Time.now - 1.day) < r[0].created_at)
self.errors.add(:rate,"you can only vote once per day")
else
return
end
end
end
나는 하나의 요율표가 있습니다. 사용자가 하루에 한 번만 평가할 수 있기를 원합니다. 그것을 유효화하기 위해 user_can_rate_after_one_day 메소드를 작성합니다. 함수를 삭제하면 사용자가 많은 시간을 평가할 수 있습니다.이 함수를 추가하면 사용자가 평가할 수 없습니다. 여기에 뭐가 잘못 됐는지 아는 사람? 감사합니다rails3 사용자는 하루에 한 번만 투표 할 수 있습니다.
나는 무엇이 문제인지 잘 모르겠습니다. 유효성 검사 방법이 제대로 작동하지 않는다는 말입니까? 그것은 이미 사용자가 이미 무언가를 평가하지 않았더라도 사용자가 전혀 평가하지 못하게 할 것입니까? – MrDanA
콘솔에 오류가 없습니까? –
잘 설명해 드리겠습니다. 메소드 user_can_rate_after_one_day는 다음과 같이 작동해야합니다. 비율이 없으면 true를 검증해야합니다. 금리가 있고 금리가 하루보다 오래되지 않으면 금이 무효화되어야합니다. "if (r [0]! = nil && (Time.now <(r [0] .created_at + 1.day))))") "로 if 조건을 씁니다. false이면 유효성 검사가 통과하지만 결과는 항상 true이고 유효성 검사는 항상 실패합니다. – user1611237