/ / невизначений метод `text '? для нуля: NilClass Перевірити uniqness rails3 ruby ​​187 - ruby-on-rails, ruby-on-rails-3

невизначений метод `text? ' за нуль: NilClass Перевірте рівність рейок3 рубін 187 - рубіново-поруччя, рубін на рейках-3

Я тільки що оновлюється від рейок 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 для відповіді № 1

Ths - синтаксис 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."

Сподіваюся, що це виправити для вас.