首页 > 解决方案 > 枚举和包含在 models.rb 中不获取数据

问题描述

你好,我是 Rails 新手

我正在尝试使用 Rails 创建一个电子商务网站。参考敏捷 Web 开发书籍。 这是订单.rb

  validates :name, :address, :email, presence: true
  has_many :line_items, dependent: :destroy
  validates :pay_type, inclusion: pay_types.keys
  enum pay_type: {
    'Debit card' => 0,
    'Credit card' => 1,
    'Net Banking' => 2
  }

我收到这样的错误

undefined local variable or method `pay_types' for #<Class:0x00007f22401067b0> 

标签: ruby-on-railsruby-on-rails-4ruby-on-rails-5ruby-on-rails-6

解决方案


您在使用枚举后定义了它。而是在之前定义它。

  enum pay_type: {
    'Debit card' => 0,
    'Credit card' => 1,
    'Net Banking' => 2
  }

  validates :pay_type, inclusion: pay_types.keys

验证是不必要的。尝试使用不在枚举中的值将导致 ArgumentError。如果需要,您可能希望验证它的存在。

validates :pay_type, presence: true

推荐阅读