«TypeError: невозможно заключить в кавычки» при использовании пользовательских типов и API атрибутов - PullRequest
0 голосов
/ 07 декабря 2018

Я столкнулся с проблемой при попытке использовать 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 голосов
/ 07 декабря 2018

Том, Добавьте пользовательский тип к атрибуту в соответствующем классе.Это скажет рельсам, как обращаться с этим атрибутом в двух разных классах при работе с отношениями.

class Other < ActiveRecord::Base
   attribute :my_attr, :my_custom
   belongs_to :my_class, primary_key: :my_attr
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...