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
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)