Pitfall: has_defaults on virtual attributes are nil when loaded from database, of course …

Posted . Visible to the public.

It smells. Rethink your code design.

Code example with makandra/has_defaults Show archive.org snapshot :

class Post < ActiveRecord::Base

  has_defaults tags: []          # field in db
  has_defaults virtual_tags: []  # no db field
  
  def all_tags
    virtual_tags + tags
  end
  
end

> Post.new.virtual_tags
=> []   # ✔

> Post.find(1).virtual_tags
=> nil   # ☹

> Post.find(1).all_tags
=> Error: undefined method '+' for nil:NilClass
Profile picture of Martin Straub
Martin Straub
Last edit
Martin Straub
License
Source code in this card is licensed under the MIT License.
Posted by Martin Straub to makandra dev (2015-09-04 15:37)