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

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
Over 8 years ago