solnic / virtus

[DISCONTINUED ] Attributes on Steroids for Plain Old Ruby Objects
MIT License
3.77k stars 228 forks source link

Class not getting initialized #368

Open jayceef opened 7 years ago

jayceef commented 7 years ago

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>

elskwid commented 7 years ago

@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.