使用自定义类型和属性API时出现“ TypeError:无法引用”

时间:2018-12-07 15:20:42

标签: ruby-on-rails activerecord ruby-on-rails-5

尝试使用Attributes API在ActiveRecord模型中允许自定义类型时遇到问题。在尝试建立关系之前,我可以使所有工作正常进行。当我这样做时,我收到一个TypeError: can't quote错误。这似乎是由ActiveRecord试图“引用”属性引起的。我假设它在引用之前将属性序列化。有人看到我想念的东西吗?

型号:

class MyClass < ActiveRecord::Base
   attribute :my_attr, :my_custom
   has_many :others, primary_key: :my_attr
end

属性类型:

class MyCustomType < ActiveRecord::Type::String

  def deserialize(value)
    MyCustom.new(value)
  end

  def cast(value)
    MyCustom.new(value)
  end

  def serialize(value)
    value.to_s
  end

end

1 个答案:

答案 0 :(得分:0)

Tom,将自定义类型添加到相应类的属性中。这将告诉Rails在处理关系时如何在两个不同的类上处理该属性。

class Other < ActiveRecord::Base
   attribute :my_attr, :my_custom
   belongs_to :my_class, primary_key: :my_attr
end