Я тільки що оновлюється від рейок 2,3 до 3, я намагаюся замінити цей старий метод на щось чистіше, тому що він виводить модель і ім'я поля, wtf!
Однак я отримую вище помилку при виклику validates_uniqueness_of (присутність працює нормально). Я перейшов у область основного ідентифікатора, і все-таки отримаю його. Будь-яка допомога вітається.
def validate
if org_name.blank?
errors.add(:org_name, :blank, :default => nil)
else
if (org = Organization.find_by_org_name(org_name)) && org != self
errors.add(:org_name, :taken, :default => nil, :value => org_name)
end
end
end
до
validates :org_name, :presence => true
validates_uniqueness_of :org_name, :scope => :org_id
Відповіді:
1 для відповіді № 1Ths - синтаксис Rails 3 для перевірки унікальності:
validating: org_name, унікальність: {scope:: org_id}
0 для відповіді № 2
Це легко виправити.
По-перше, проаналізуйте повідомлення про помилку:
Переклад назви Org відсутній: en.activerecord.errors.models.user.attributes.org_name.blank
Це викликано наступним рядком коду:
errors.add(:org_name, :blank, :default => nil)
Коли ви називаєте вище, ви розказуєте рейлам шукати переклад, ключ якого є :blank
. Ви, напевно, ще не налаштували це, щоб зробити це, просто зайдіть у ваш файл locales (config / locales / en.yml) і додайте наступне:
en:
hello: "Hello world"
activerecord:
errors:
models:
organization:
attributes:
org_name:
blank: "can"t be blank."
Сподіваюся, що це виправити для вас.