我的Rails应用程序上的红宝石关联出错

时间:2018-12-10 12:57:45

标签: ruby-on-rails ruby

这是堆栈:

nil:NilClass的未定义方法“ class_name”是什么意思? class_eval

    def redirect_based_on_shift_state
         redirect_to new_shift_call_list_path(created_shifts) if current_user && created_shifts = current_user.shifts.in_state(:created).first
    end

    Class < User
         self.primary_key = 'guid'
         has_many :shifts, foreign_key: 'user_guid', primary_key: 'guid'

    Class < Shift
         belongs_to :user, foreign_key: 'user_guid', primary_key: 'guid

我已经在每个模型中添加了class_name,以明确地指定它,尽管我没有使用其他的类名。希望能够解决此问题,但是没有。这是在我将ruby从2.2.1升级到2.5.1并运行bundle update --conservative之后发生的。 感谢您的帮助!

enter image description here enter image description here

1 个答案:

答案 0 :(得分:0)

这可能与运算符优先级有关。尝试将created_shifts分配移到另一行。

def redirect_based_on_shift_state
  return unless current_user
  created_shifts = current_user.shifts.in_state(:created).first
  return unless created_shifts
  redirect_to new_shift_call_list_path(created_shifts)
end

如果仍然发生错误,这也使得发现问题更加容易。通过对多行进行逻辑处理,指向某行的堆栈也更加准确,因为每行发生的次数较少。