Я новичок в ruby на рельсах, и я унаследовал кодовую базу.Прямо сейчас я не могу создать новую учетную запись пользователя в своем приложении, при попытке получить следующую ошибку:
NoMethodError в Users :: RegistrationsController # create
неопределенный метод `name 'дляnil: NilClass Rails.root: / home / nathan / dev / legwork-core
Трассировка приложений |Framework Trace |Приложение Full Trace / models / contact.rb: 74: в block (2 levels) in <class:Contact>'
app/models/user.rb:31:in
update_contact '
Код вызова здесь:
searchable do
string :category do
self.category.name
end
end
Категория должна быть экземпляром ContactCategory, ито, что я думаю, мне нужно, чтобы установить self.category по умолчанию, если его ноль.Я пытался это исправить:
after_initialize :set_defaults
def set_defaults
self.category = ContactCategory.first if self.category.nil?
end
Я также пытался:
def after_initialize
self.category = ContactCategory.first if self.category.nil?
end
И я пробовал:
before_create :set_defaults
def set_defaults
self.category = ContactCategory.first if self.category.nil?
end
Кто-то еще предложил поставить этологика в before_save, но уже есть before_save, в котором есть эта логика, вот где я впервые увидел то, что автор намеревался использовать по умолчанию.
UPDATE:
Thisвопрос глупо теперь, когда я вижу, что не так.Я предполагал, что оператор присваивания никогда не выполнялся, потому что предполагал, что ContactCategory.first также не равен nil.К сожалению, все здесь работает, как ожидалось.Мораль этой истории такова:
Все крючки, которые я использовал для установки значения по умолчанию, работали правильно.Я бы порекомендовал использовать их для установки значения по умолчанию с помощью ActiveRecord.