Tôi đang viết một validator tùy chỉnh trong ActiveRecord để một thời hạn có ý nghĩa:Rails: Members một ngày Lớn hơn Một
validate :deadline_is_possible?
def deadline_is_possible?
if deadline > begins_at
errors.add(:deadline, 'must be possible')
end
end
Tuy nhiên điều này sẽ tạo ra một "NoMethodError: Phương pháp xác định`>' cho nil: NilClass ". Sự kiện của tôi đã cố gắng biến ngày thành chuỗi, như:
và mặc dù nó không phát sinh lỗi, cũng không hoạt động.
Tôi cũng tuyên bố xác nhận khác (chẳng hạn như
def begins_at_is_date?
if !begins_at.is_a?(Date)
errors.add(:begins_at, 'must be a date')
end
end
mà làm việc OK.
này loại bỏ các lỗi, tuy nhiên nó không hoạt động như mong đợi: '@ event.deadline = @ event.begins_at + 1.day;' '@event.should_not be_valid' lợi nhuận hợp lệ. .. Tôi có nên chọn một viên ngọc cụ thể hơn để thực hiện công việc không? – piffy
tôi sửa bản thân mình: mã trên hoạt động, trong khi đây không: '@ event.deadline = @ event.begins_at;' '@event.should be_valid' lợi nhuận KHÔNG hợp lệ ... – piffy
Đó có thể là gây hiểu nhầm ... bạn sẽ thử '@ event.deadline = @ event.begins_at; @ event.should có (0) .errors_on (: deadline) ' –