2012-03-11 2 views
1

Я просто работаю над простым приложением Ruby on Rails, которое хранит данные о персонале, но я понял, что мне нужен способ проверить, что дата занятости обязательно должна стать началом дата отставки.Дата выпуска с Ruby on Rails

<div class="field"> 
    <%= f.label :date_of_employment %><br /> 
    <%= f.date_select :date_of_employment, :start_year =>1990 %> 
</div> 
<div class="field"> 
    <%= f.label :date_of_resignation %><br /> 
    <%= date_select :date_of_resignation, :start_year => Time.now %> 
+1

извините, но вы можете объяснить свою проблему? –

+0

nash, что я пытаюсь сделать, так это то, что после того, как вы введете дату занятости, не удастся ввести дату раньше, чем эту дату на дату отставки, так как нет ничего контролирующего, что –

+0

Я думаю единственный способ добиться этого - написать javascript. –

ответ

2

Вы должны проверить validates timeliness камень, если вы счастливы, чтобы добавить внешний код в ваш проект. Он добавляет все виды проверки на основе времени и даты.

Включая проверку того, что одно поле находится до/после другого. Например, следующие команды могут быть использованы в вас модели:

validates_datetime :date_of_resignation, :after => :date_of_employment 

Этого камень не полагается на JavaScript, чтобы работать, это чистый рубин.

0

Одним из простых решений, которые вы можете рассмотреть, является наличие функции javascript для проверки этих двух дат на форме submit. Таким образом, вашему серверу не нужно обрабатывать недопустимые данные.

Мы можем выполнить проверку на уровне модели Rails перед сохранением в базе данных. Например, эти строки кода в модели будут проверять данные перед сохранением

validate :verify_date 
def verify_date 
    errors.add("Invalid date") if date_of_resignation < date_of_employment 
end 
+1

И что произойдет, если пользователь отключит Javascript, а затем сервер * сделает * получить недопустимые данные? –

+0

Вы также можете проверить свою модель Rails. Что-то вроде: validate verfy_dates, где verify_dates является функцией, используйте errors.add для передачи ошибки. Rails не сохранит данные в базе данных, и вы можете вернуть ошибки в представлении с помощью your_model_instance.errors – Ethan

+0

@ Ethan, можете ли вы, пожалуйста, дать больше информации о том, как правильно это сделать в модели –