Fix users rule promo association
Fix users rule promo association

Also add an association_foreign_key config because it assumed that every
Spree.user_class would return User which might not be always the case.

[Fixes #3145] [Fixes #3149]

TimurTarasenko/spree,welitonfreitas/spree,mleglise/spree,hoanghiep90/spree,dafontaine/spree,adaddeo/spree,Senjai/solidus,Nevensoft/spree,sfcgeorge/spree,Senjai/spree,HealthWave/spree,fahidnasir/spree,scottcrawford03/solidus,xuewenfei/solidus,fahidnasir/spree,knuepwebdev/FloatTubeRodHolders,Nevensoft/spree,maybii/spree,freerunningtech/spree,Machpowersystems/spree_mach,welitonfreitas/spree,brchristian/spree,azranel/spree,Machpowersystems/spree_mach,Engeltj/spree,lsirivong/solidus,freerunningtech/spree,lyzxsc/spree,nooysters/spree,urimikhli/spree,locomotivapro/spree,thogg4/spree,jimblesm/spree,jeffboulet/spree,freerunningtech/spree,assembledbrands/spree,jparr/spree,Ropeney/spree,zamiang/spree,cutefrank/spree,mindvolt/spree,joanblake/spree,Engeltj/spree,joanblake/spree,Hawaiideveloper/shoppingcart,tailic/spree,madetech/spree,joanblake/spree,yushine/spree,jordan-brough/spree,mleglise/spree,agient/agientstorefront,gregoryrikson/spree-sample,edgward/spree,alvinjean/spree,lyzxsc/spree,dotandbo/spree,lsirivong/solidus,abhishekjain16/spree,biagidp/spree,richardnuno/solidus,Nevensoft/spree,assembledbrands/spree,vmatekole/spree,FadliKun/spree,jspizziri/spree,AgilTec/spree,cutefrank/spree,dandanwei/spree,tancnle/spree,net2b/spree,pjmj777/spree,Migweld/spree,dandanwei/spree,groundctrl/spree,JuandGirald/spree,jimblesm/spree,TrialGuides/spree,Arpsara/solidus,kewaunited/spree,keatonrow/spree,lyzxsc/spree,jasonfb/spree,jordan-brough/solidus,Hates/spree,caiqinghua/spree,watg/spree,kewaunited/spree,tomash/spree,AgilTec/spree,TrialGuides/spree,wolfieorama/spree,jhawthorn/spree,locomotivapro/spree,gregoryrikson/spree-sample,woboinc/spree,vmatekole/spree,tesserakt/clean_spree,project-eutopia/spree,hifly/spree,athal7/solidus,JDutil/spree,shekibobo/spree,pulkit21/spree,DarkoP/spree,shekibobo/spree,net2b/spree,devilcoders/solidus,grzlus/solidus,jspizziri/spree,agient/agientstorefront,APohio/spree,reinaris/spree,imella/spree,keatonrow/spree,alvinjean/spree,useiichi/spree,athal7/solidus,pervino/spree,Hates/spree,Lostmyname/spree,zaeznet/spree,NerdsvilleCEO/spree,zamiang/spree,quentinuys/spree,ujai/spree,assembledbrands/spree,azranel/spree,jordan-brough/solidus,jsurdilla/solidus,CiscoCloud/spree,surfdome/spree,TrialGuides/spree,rakibulislam/spree,agient/agientstorefront,vcavallo/spree,kewaunited/spree,JuandGirald/spree,lyzxsc/spree,reidblomquist/spree,Hawaiideveloper/shoppingcart,knuepwebdev/FloatTubeRodHolders,APohio/spree,urimikhli/spree,JDutil/spree,alepore/spree,rbngzlv/spree,Lostmyname/spree,JuandGirald/spree,FadliKun/spree,camelmasa/spree,forkata/solidus,lsirivong/solidus,Hates/spree,vinsol/spree,Hates/spree,raow/spree,KMikhaylovCTG/spree,kewaunited/spree,ckk-scratch/solidus,shaywood2/spree,surfdome/spree,rajeevriitm/spree,useiichi/spree,priyank-gupta/spree,yomishra/pce,jordan-brough/spree,pjmj777/spree,pervino/spree,radarseesradar/spree,lsirivong/spree,orenf/spree,bjornlinder/Spree,SadTreeFriends/spree,carlesjove/spree,DarkoP/spree,fahidnasir/spree,wolfieorama/spree,athal7/solidus,Arpsara/solidus,Boomkat/spree,robodisco/spree,LBRapid/spree,APohio/spree,edgward/spree,locomotivapro/spree,rajeevriitm/spree,CJMrozek/spree,surfdome/spree,xuewenfei/solidus,ahmetabdi/spree,maybii/spree,Kagetsuki/spree,sideci-sample/sideci-sample-spree,biagidp/spree,SadTreeFriends/spree,hifly/spree,shaywood2/spree,keatonrow/spree,jhawthorn/spree,surfdome/spree,patdec/spree,sliaquat/spree,quentinuys/spree,PhoenixTeam/spree_phoenix,Senjai/spree,CiscoCloud/spree,rbngzlv/spree,woboinc/spree,cutefrank/spree,dandanwei/spree,vinsol/spree,Arpsara/solidus,jimblesm/spree,urimikhli/spree,TimurTarasenko/spree,ahmetabdi/spree,builtbybuffalo/spree,Hawaiideveloper/shoppingcart,karlitxo/spree,vulk/spree,kitwalker12/spree,vinsol/spree,Senjai/solidus,jparr/spree,devilcoders/solidus,azclick/spree,sunny2601/spree,jaspreet21anand/spree,moneyspyder/spree,calvinl/spree,watg/spree,orenf/spree,quentinuys/spree,vcavallo/spree,forkata/solidus,richardnuno/solidus,azranel/spree,dotandbo/spree,ahmetabdi/spree,kitwalker12/spree,SadTreeFriends/spree,carlesjove/spree,tailic/spree,madetech/spree,alvinjean/spree,jparr/spree,alejandromangione/spree,madetech/spree,sliaquat/spree,rakibulislam/spree,piousbox/spree,maybii/spree,mindvolt/spree,siddharth28/spree,mleglise/spree,zaeznet/spree,delphsoft/spree-store-ballchair,volpejoaquin/spree,cutefrank/spree,vinayvinsol/spree,odk211/spree,archSeer/spree,TimurTarasenko/spree,StemboltHQ/spree,tancnle/spree,jeffboulet/spree,StemboltHQ/spree,softr8/spree,rajeevriitm/spree,hifly/spree,njerrywerry/spree,mindvolt/spree,mindvolt/spree,DarkoP/spree,Ropeney/spree,imella/spree,nooysters/spree,CiscoCloud/spree,DynamoMTL/spree,jhawthorn/spree,dotandbo/spree,raow/spree,richardnuno/solidus,ramkumar-kr/spree,jparr/spree,pervino/solidus,Mayvenn/spree,berkes/spree,ramkumar-kr/spree,brchristian/spree,NerdsvilleCEO/spree,brchristian/spree,njerrywerry/spree,vulk/spree,vmatekole/spree,groundctrl/spree,abhishekjain16/spree,delphsoft/spree-store-ballchair,vinayvinsol/spree,sfcgeorge/spree,karlitxo/spree,welitonfreitas/spree,ayb/spree,mleglise/spree,camelmasa/spree,carlesjove/spree,pervino/spree,tesserakt/clean_spree,jordan-brough/spree,KMikhaylovCTG/spree,rbngzlv/spree,Engeltj/spree,dotandbo/spree,edgward/spree,alepore/spree,lsirivong/spree,JuandGirald/spree,maybii/spree,Senjai/solidus,derekluo/spree,PhoenixTeam/spree_phoenix,Boomkat/spree,tailic/spree,dafontaine/spree,net2b/spree,NerdsvilleCEO/spree,abhishekjain16/spree,piousbox/spree,bonobos/solidus,keatonrow/spree,quentinuys/spree,Nevensoft/spree,patdec/spree,alvinjean/spree,KMikhaylovCTG/spree,RatioClothing/spree,radarseesradar/spree,FadliKun/spree,AgilTec/spree,trigrass2/spree,Migweld/spree,firman/spree,Kagetsuki/spree,Senjai/solidus,gautamsawhney/spree,ckk-scratch/solidus,Boomkat/spree,NerdsvilleCEO/spree,yiqing95/spree,bonobos/solidus,grzlus/solidus,CJMrozek/spree,yomishra/pce,archSeer/spree,reidblomquist/spree,gregoryrikson/spree-sample,lsirivong/spree,yushine/spree,project-eutopia/spree,ramkumar-kr/spree,thogg4/spree,jimblesm/spree,karlitxo/spree,gautamsawhney/spree,alejandromangione/spree,archSeer/spree,scottcrawford03/solidus,azclick/spree,volpejoaquin/spree,jasonfb/spree,omarsar/spree,Migweld/spree,forkata/solidus,jordan-brough/solidus,sliaquat/spree,wolfieorama/spree,miyazawatomoka/spree,biagidp/spree,sliaquat/spree,shaywood2/spree,ayb/spree,pervino/spree,camelmasa/spree,trigrass2/spree,LBRapid/spree,watg/spree,shekibobo/spree,knuepwebdev/FloatTubeRodHolders,yushine/spree,degica/spree,pulkit21/spree,reinaris/spree,lsirivong/spree,bricesanchez/spree,njerrywerry/spree,jaspreet21anand/spree,tancnle/spree,volpejoaquin/spree,shioyama/spree,FadliKun/spree,reinaris/spree,karlitxo/spree,vulk/spree,piousbox/spree,tancnle/spree,archSeer/spree,lsirivong/solidus,DynamoMTL/spree,pjmj777/spree,softr8/spree,bonobos/solidus,jasonfb/spree,calvinl/spree,madetech/spree,progsri/spree,LBRapid/spree,AgilTec/spree,siddharth28/spree,moneyspyder/spree,SadTreeFriends/spree,radarseesradar/spree,DynamoMTL/spree,ujai/spree,nooysters/spree,groundctrl/spree,Machpowersystems/spree_mach,RatioClothing/spree,yiqing95/spree,Mayvenn/spree,APohio/spree,calvinl/spree,welitonfreitas/spree,jspizziri/spree,caiqinghua/spree,forkata/solidus,project-eutopia/spree,RatioClothing/spree,rakibulislam/spree,StemboltHQ/spree,jordan-brough/solidus,pervino/solidus,sfcgeorge/spree,omarsar/spree,berkes/spree,bjornlinder/Spree,brchristian/spree,zaeznet/spree,dandanwei/spree,Ropeney/spree,pervino/solidus,pulkit21/spree,odk211/spree,reinaris/spree,robodisco/spree,jaspreet21anand/spree,rakibulislam/spree,beni55/spree,sunny2601/spree,reidblomquist/spree,azclick/spree,grzlus/spree,hoanghiep90/spree,Mayvenn/spree,tesserakt/clean_spree,ujai/spree,ahmetabdi/spree,jasonfb/spree,ckk-scratch/solidus,dafontaine/spree,sideci-sample/sideci-sample-spree,beni55/spree,gautamsawhney/spree,edgward/spree,jsurdilla/solidus,beni55/spree,TrialGuides/spree,berkes/spree,yushine/spree,azclick/spree,derekluo/spree,moneyspyder/spree,builtbybuffalo/spree,jeffboulet/spree,CJMrozek/spree,Lostmyname/spree,pulkit21/spree,scottcrawford03/solidus,joanblake/spree,reidblomquist/spree,gregoryrikson/spree-sample,useiichi/spree,Mayvenn/spree,jeffboulet/spree,grzlus/spree,Migweld/spree,yiqing95/spree,bjornlinder/Spree,adaddeo/spree,tesserakt/clean_spree,project-eutopia/spree,thogg4/spree,tomash/spree,miyazawatomoka/spree,net2b/spree,carlesjove/spree,berkes/spree,KMikhaylovCTG/spree,sunny2601/spree,ayb/spree,Kagetsuki/spree,zamiang/spree,delphsoft/spree-store-ballchair,sideci-sample/sideci-sample-spree,yiqing95/spree,trigrass2/spree,imella/spree,firman/spree,beni55/spree,njerrywerry/spree,softr8/spree,grzlus/solidus,hifly/spree,progsri/spree,progsri/spree,Arpsara/solidus,tomash/spree,firman/spree,robodisco/spree,agient/agientstorefront,grzlus/spree,softr8/spree,trigrass2/spree,yomishra/pce,shekibobo/spree,pervino/solidus,Senjai/spree,zamiang/spree,jsurdilla/solidus,bricesanchez/spree,HealthWave/spree,alejandromangione/spree,jspizziri/spree,bonobos/solidus,adaddeo/spree,Boomkat/spree,orenf/spree,Lostmyname/spree,raow/spree,grzlus/spree,calvinl/spree,siddharth28/spree,gautamsawhney/spree,grzlus/solidus,miyazawatomoka/spree,patdec/spree,athal7/solidus,Ropeney/spree,omarsar/spree,priyank-gupta/spree,patdec/spree,hoanghiep90/spree,bricesanchez/spree,vinayvinsol/spree,Kagetsuki/spree,thogg4/spree,volpejoaquin/spree,vcavallo/spree,vinsol/spree,rajeevriitm/spree,derekluo/spree,woboinc/spree,fahidnasir/spree,CJMrozek/spree,azranel/spree,ramkumar-kr/spree,sfcgeorge/spree,miyazawatomoka/spree,dafontaine/spree,adaddeo/spree,alejandromangione/spree,moneyspyder/spree,sunny2601/spree,ayb/spree,degica/spree,vinayvinsol/spree,odk211/spree,caiqinghua/spree,tomash/spree,priyank-gupta/spree,shioyama/spree,jaspreet21anand/spree,shaywood2/spree,DarkoP/spree,TimurTarasenko/spree,orenf/spree,useiichi/spree,xuewenfei/solidus,priyank-gupta/spree,jsurdilla/solidus,ckk-scratch/solidus,HealthWave/spree,JDutil/spree,CiscoCloud/spree,Engeltj/spree,rbngzlv/spree,alepore/spree,builtbybuffalo/spree,robodisco/spree,delphsoft/spree-store-ballchair,richardnuno/solidus,piousbox/spree,omarsar/spree,vmatekole/spree,devilcoders/solidus,nooysters/spree,JDutil/spree,firman/spree,vcavallo/spree,kitwalker12/spree,zaeznet/spree,groundctrl/spree,camelmasa/spree,PhoenixTeam/spree_phoenix,vulk/spree,devilcoders/solidus,shioyama/spree,odk211/spree,raow/spree,scottcrawford03/solidus,degica/spree,progsri/spree,abhishekjain16/spree,caiqinghua/spree,locomotivapro/spree,builtbybuffalo/spree,xuewenfei/solidus,wolfieorama/spree,Hawaiideveloper/shoppingcart,siddharth28/spree,radarseesradar/spree,PhoenixTeam/spree_phoenix,hoanghiep90/spree,derekluo/spree,DynamoMTL/spree