For some reason, the polymorphic has_many no longer passes the where arguments for first or initialize.

    # Rails 4 prints nil
    # Rails 3 prints 2
    puts post.taggings.where(tag_id: 2).first_or_initialize.tag_id

The workaround is to use find_or_initialize_by

    puts post.taggings.find_or_initialize_by(tag_id: 2)

However, this is bad because if your codebase has a lot of
first_or_initializes, the extra where parameters are silently ignored
causing surprising bugs.

Is the solution to fix first_or_initialize, or deprecate it in favor of
find_or_initialize_by?