未定义的方法`to_hash'同时拯救改革宝石

时间:2014-06-23 13:38:53

标签: ruby-on-rails forms hash gem reform

我遇到了问题。我在我的Rails应用程序中使用了一些复杂的形式。不幸的是我在创建表单时卡住了。那是我的代码:

class Order::Form < Reform::Form
  include Coercion
  include Composition
  include Reform::Form::ActiveRecord

  property :subscription, on: :order
  property :due_date, type: Date, on: :order
  property :start_fee, numericality: true, on: :order

  collection :products, populate_if_empty: Product, on: :order do
    property :type
    property :budget
  end

  property :campaign, on: :order do
    property :customer_id

    property :customer do
      property :id
      property :organization_number
    end
  end

  model :order

  def persist!(params)
    if validate(params)
      binding.pry
      # begin
        ::ActiveRecord::Base.transaction do
          save do |data, map|
            ...
          end
        end
      # rescue Exception
      #   false
      # end
    end
  end
end

当我试图保存时,我收到了这个错误:

NoMethodError - undefined method `to_hash' for #<#<Class:0x007f984ddef6d8>:0x007f984a65a4>

我想知道我是否使用嵌套模型正确配置了Composition。

1 个答案:

答案 0 :(得分:-1)

我遇到了同样的异常,之所以发生这种情况,是因为我将一个常量(ENV)设置重新定义为String。因为最初它是一个全局常量类型Hash,我使用的宝石很困惑。

尝试查看是否在其他地方替换曾经是哈希的东西。