Вы уверены, что не перезагружаете какую-либо категорию между созданием продуктов и их повторением?Просто сделал быстрый тест, и это, кажется, работает так, как вы намереваетесь (другие названия моделей, те же ассоциации):
2.5.1 :018 > c = Channel.first
Channel Load (0.1ms) SELECT "channels".* FROM "channels" ORDER BY "channels"."id" ASC LIMIT ? [["LIMIT", 1]]
=> #<Channel id: 1>
2.5.1 :019 > c.channel_users.build
=> #<ChannelUser id: nil, enabled: nil, status: nil, last_grant_at: nil, channel_id: 1>
2.5.1 :020 > c.channel_users.each { |cu| p cu }
ChannelUser Load (0.2ms) SELECT "channel_users".* FROM "channel_users" WHERE "channel_users"."channel_id" = ? [["channel_id", 1]]
#<ChannelUser id: 1, enabled: nil, status: "blocking", last_grant_at: "2018-09-15 18:32:04", channel_id: 1>
#<ChannelUser id: nil, enabled: nil, status: nil, last_grant_at: nil, channel_id: 1>