Как исправить "неопределенный метод" empty? "за #: ошибка? - PullRequest
0 голосов
/ 16 февраля 2019

У меня было has_many association между user и contact_information.Я добавил два столбца к contact_information как address_one и address_two.А затем изменил ассоциацию на has_one ассоциацию между пользователем и contact_information.Но я получаю сообщение об ошибке: undefined method пусто?для # `

В приложении / models / концерны / user_associations.rb:

    has_many :contact_informations,
     -> { where(address_one: nil, address_two: nil) },
      as: :user

было изменено на

    has_one :contact_information,
     -> { where(address_one: nil, address_two: nil) },
      as: :user

Затем в ContactInformationsController изменилось contact_informations до contact_information.Я получаю сообщение об ошибке в ContactInformationsController#show:

  def show
    if @user.contact_information.empty?
      redirect_to new_contact_information_path
    else
      redirect_to edit_contact_information_path
    end
  end

Значение @user.contact_informations.empty? было изменено на @user.contact_information.empty?.Но когда я пытаюсь получить доступ к странице,

NoMethodError - undefined method пусто?для # `

Я искал в ИНТЕРНЕТЕ похожие проблемы, и большинство из них сказали, что нужно конвертировать .to_s.Но это не решило мою проблему

Объект contact_information присутствует.Тогда почему он дает ошибку на .empty??Может кто-нибудь объяснить это?

Спасибо

1 Ответ

0 голосов
/ 16 февраля 2019
Метод

empty? определен для перечислимых объектов, включая отношение активной записи, но он не определен для отдельных ActiveRecord объектов, таких как ContactInformation экземпляр.Если вы хотите проверить наличие ассоциации, вы можете просто сделать:

if @user.contact_information
  redirect_to edit_contact_information_path
else
  redirect_to new_contact_information_path
end
...