draftsman icon indicating copy to clipboard operation
draftsman copied to clipboard

Error when publishing a draft that has a polymorphic association if the association is nil

Open andymcintosh opened this issue 8 years ago • 1 comments

I have a Slide class which optionally belongs to an instance of a "slideable" class:

belongs_to :slideable, polymorphic: true

Line 79 of draft.rb assumes that calling my_item.slideable_type will always return a string that can be constantized to find the associated class.

my_item.send(association.foreign_key.sub('_id', '_type')).constantize

However, in my case, because I don't have slideable_type defined until I actually have a slideable associated which results in this error:

NoMethodError: undefined method `constantize' for nil:NilClass

I think I can work around this by having a default value for slideable_type set in Postgres but it seems like it might be fairly easy to add some logic to check if the polymorphic type is defined/valid when trying to determine the association class.

andymcintosh avatar Mar 21 '17 20:03 andymcintosh

Committed a fix to my fork. I'll put together tests and a pull request when I get a few minutes.

andymcintosh avatar Mar 21 '17 21:03 andymcintosh