Я действительно приехал для симпатии Знатока Стандартное Расположение Каталога .
Одна из ключевых идей для меня состоит в том, чтобы иметь два исходных корня - один для производственного кода и один для тестового кода как так:
MyProject/src/main/java/com/acme/Widget.java
MyProject/src/test/java/com/acme/WidgetTest.java
(здесь, и src/main/java и src/test/java являются исходными корнями).
Преимущества:
Одно эмпирическое правило о размещении класса и пакетах:
Вообще говоря, хорошо структурированные проекты будут свободны от круговые зависимости . Изучите, когда они плохи (и когда они не ), и рассмотрите инструмент как JDepend или SonarJ, который поможет Вам устранить их.
Я думаю, что EmFi что-то знает. Но я не думаю, что validates_presence_of: email
должен вас сдерживать. Электронное письмо
должно всегда присутствовать - если его оставить пустым в форме, этот параметр не повлияет на ваше сохранение пользователя. Если он введен в форму, даже для обновления, он должен иметь email_confirmation
для поездки.
Попробуйте это:
validates_presence_of :email
validates_presence_of :email_confirmation, :if => :email_changed?
validates_confirmation_of :email
you have two options. one is to use :on
. by default, they are set to :on => :save
, but you can do something like this this
validates_presence_of :email, :on => :create
or
validates_presence_of :email, :on => :update
the other options is to use :if
, and then pass in a method name or a proc. so something like
validates_presence_of :email, :if => :should_validate
or
validates_presence_of :email, :if => Proc.new { |user| user.signup_stage > 2 }
Hope that helps :)
Вы хотите использовать предложение: if при проверке, которое использует методы ActiveRecord :: Dirty:
validates_presence_of :email, :if => Proc.new { |user| user.email_changed?}
NB Работает только в Rails 2.1 или новее.