virtus icon indicating copy to clipboard operation
virtus copied to clipboard

Class not getting initialized

Open jayceef opened this issue 9 years ago • 1 comments

I have a normal class in my Rails 5 app:

class Routine < ApplicationRecord belongs_to :user end

irb: a= Routine.new(:elevation => 2343) => #<Routine:0x007ff2a19c2ea8 elevation: 2343

But when I add the Virtus gem the class doesn't get initialized:

class Routine < ApplicationRecord include Virtus.model belongs_to :user attribute :elevation, Integer end

irb: ad = Routine.new(:elevation => 133) =>< Routine:0x007ff29e860e78 not initialized>

jayceef avatar Sep 20 '16 03:09 jayceef

@jayceef I haven't used Rails 5 but it looks like the not initialized message comes from an inspect method that is checking if @attributes exist on the model. (see here). My guess is you need to implement an initialize method of your own and call super.

Having said that, I don't think it's a good idea to mix Virtus and ApplicationRecord/ActiveRecord. I've had luck using it with ActiveModel but it's pretty tricky.

elskwid avatar Sep 20 '16 06:09 elskwid