From 2233d73c39afeecc748b3963679008946991fd5b Mon Sep 17 00:00:00 2001 From: Mark Moser Date: Thu, 15 Sep 2016 13:26:31 -0500 Subject: [PATCH 1/4] migration and associations completes #26 --- app/models/quiz.rb | 2 ++ app/models/reviewer_to_quiz.rb | 5 +++++ app/models/user.rb | 4 +++- ...160915164450_create_reviewer_to_quizzes.rb | 12 ++++++++++++ db/schema.rb | 10 +++++++++- erd.pdf | Bin 36133 -> 38263 bytes test/fixtures/reviewer_to_quizzes.yml | 9 +++++++++ test/fixtures/users.yml | 6 ++++++ test/models/reviewer_to_quiz_test.rb | 8 ++++++++ 9 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 app/models/reviewer_to_quiz.rb create mode 100644 db/migrate/20160915164450_create_reviewer_to_quizzes.rb create mode 100644 test/fixtures/reviewer_to_quizzes.yml create mode 100644 test/models/reviewer_to_quiz_test.rb diff --git a/app/models/quiz.rb b/app/models/quiz.rb index f8d0b23..c1ed37b 100644 --- a/app/models/quiz.rb +++ b/app/models/quiz.rb @@ -2,6 +2,8 @@ class Quiz < ApplicationRecord has_many :questions, -> { order(:sort) } has_many :candidates + has_many :reviewer_to_quizzes + has_many :reviewers, through: :reviewer_to_quizzes, source: :user validates :name, presence: true, uniqueness: true validates :dept, presence: true diff --git a/app/models/reviewer_to_quiz.rb b/app/models/reviewer_to_quiz.rb new file mode 100644 index 0000000..27634ad --- /dev/null +++ b/app/models/reviewer_to_quiz.rb @@ -0,0 +1,5 @@ +# frozen_string_literal: true +class ReviewerToQuiz < ApplicationRecord + belongs_to :user + belongs_to :quiz +end diff --git a/app/models/user.rb b/app/models/user.rb index 00bbdad..f57a07d 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -1,7 +1,9 @@ # frozen_string_literal: true class User < ApplicationRecord has_secure_password - has_many :candidates, foreign_key: "recruiter_id" + has_many :candidates, foreign_key: :recruiter_id + has_many :reviewer_to_quizzes + has_many :quizzes, through: :reviewer_to_quizzes validates :email, presence: true, uniqueness: true validates :name, presence: true diff --git a/db/migrate/20160915164450_create_reviewer_to_quizzes.rb b/db/migrate/20160915164450_create_reviewer_to_quizzes.rb new file mode 100644 index 0000000..4f29634 --- /dev/null +++ b/db/migrate/20160915164450_create_reviewer_to_quizzes.rb @@ -0,0 +1,12 @@ +# frozen_string_literal: true +class CreateReviewerToQuizzes < ActiveRecord::Migration[5.0] + def change + create_table :reviewer_to_quizzes do |t| + t.integer :user_id, null: false + t.integer :quiz_id, null: false + + t.timestamps + end + add_index :reviewer_to_quizzes, :quiz_id + end +end diff --git a/db/schema.rb b/db/schema.rb index ac3eb57..41a294d 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20160826200610) do +ActiveRecord::Schema.define(version: 20160915164450) do create_table "answers", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| t.integer "candidate_id" @@ -65,6 +65,14 @@ ActiveRecord::Schema.define(version: 20160826200610) do t.string "name" end + create_table "reviewer_to_quizzes", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| + t.integer "user_id", null: false + t.integer "quiz_id", null: false + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + t.index ["quiz_id"], name: "index_reviewer_to_quizzes_on_quiz_id", using: :btree + end + create_table "users", force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t| t.string "name" t.string "email" diff --git a/erd.pdf b/erd.pdf index 9513737b875eb3d2fe1ae2a157a0eddc5004f687..1d050f239fb87815b077a00b0d064741fcded738 100644 GIT binary patch delta 31899 zcmX_{Q;;SMtft$x?P=S#ZQGhQr}4FI+qP}nwr#ujKU;hD?x|GrUL~nYQYp>=d9476 zQvzhjB;vKgkKTS$akna|E!gpAZ2L5+wHHxC4qql-ORtj-r&O!aR$r~XKfME!^`~c# z&RmVeZY1D{xFr$+fdKrxS9{NPp9%SToxfjd2%m55WD->to_(=XzII<)eveAriQU0) zR*C8Du0^s!m$tWF2)DO5`McgVem#5Np8%h$vmd=tfwvs?2w}0eH~PyXot-*`yC)-d zkNaA+xxQZ_KGR`6F5OjpzcoYG8p#diyZo2Th|iTeUYk9w>-&$BKPUFz2KI3gm%WF( zyN$Lv0P4z{k)OrWQq#jy?3B`gP_TY(ISz;Hdf5KHMYd2;DXaM_@fxGYN+7VNmkxRWpUGLw9eRo{c;aOK2RoEZn z#EPyGP!hZ*@B1sQ*1>CVo~<`D;&;Eepkdmgm~0;l<&W{UrfC;x_HW1aFp_)fL&liG zTl*Hij(7orc?A(!-@mkIrwyLpFN2l#`bMN2yT{!XySmgqTIhqfHPTg2vXcC2?kUg zEl`ANBxmV|PTrPpUYlQDhV70A84pYibt<2dg~7(BsYKs%j8c*DM1m2Fi1LnyrCl9% zx0`Sp_5Rk6rFrUN1@jt(cYyhoQMdvR7X6jQX!7)B8`DI=YxKPLI@&?qzb;d#SD*Eh zcMW@k9^dz6NL5AnhagdvFs%aNG3H$tL{61Wcq(H=D=x;(>hytY#AQ3g=!4b9O)wZu zd}`($U!Klx!PM#OGN4i`1;2x7+e17dMDnpw&*toLR3xjIE2P7`aKL$u^=bDz?q=sM zT6P8GC~P1mn8Dwlr@U%tb(@vO52Jf%LVmeFC?=Dsv0x$GE^}6TAx!o68+m3*nLmvq zyU*GY=yXkew%Q--4tZ>B^;(JJ_Ma7Y5j1L=-u*pLiyZ?A_3q^`EO7i41M>AJJTAn> z+#s!T!Ht=rW;p9s@c_YcVo!x&&!Wpyo0RKvRdCpm4xNRH>6Ac)>ag)ScQDoe* zpTm_(>)>`k^}p(BCXdk3=m%MY+jBL9H>0YD)4lD(opVcwi-IjtDGtQ5NY}5CM$vga zk)bXRL<5>YLICeMtbTA$EwS_Pi_+3^C8>Bm_Lc$Q5+TgR{nNhpO+K3dCtki}*}-?; z_^cKsU-|ZNC?|7>h1IWyv50Y>U_<(~(5s{*_B+e-=_EJUx==>8VG(n7Mn8YGfhpDG$NdUW*KT4d6hB{T%SP*+>V&%=6 zb}nsy;2W`!%mkXgUu$@9Hguy(V8&>3AQxV1JP|^rIIk{zkC^T2s`-c3Y}zkW@T&$7 zG#=dd_wuUlL!IiVONQuo$M^oMvN5SqEtk65PWQLW8GPx|%;?2}Hw9S6jl`0v6iAsM zcO)Sa-T@k?`(}nOl=a#yIQs5BLDn}0D#@niB2{*!dUk&wmV$ZM|H{7{IvENfR_RWr zD?~Bo817*@6tQUWqRUj22Y)|F%U-(Ss~Osvu62Rau%38{i1u?~L-0Wn-UA|VWty)Mr~i z@X%d$)EQjq=@_G0z80)-K6?`PIMc)|C=5xNtRN#iy!RDO^QL~qjGZgyt0GC{jn8~} znfIvh@&eZ&hN!X-BC3?QFVoA-kqfGi>;b^1t zL^ErkKY<%DMzdL-XT1<@KT*J5AC?}-tp^-+fh_WbP6geUjP-CZ92F6gL#co}F_HE` zDqascr(g;A$iefLU|R58XhkwCpX{)=BmpbE2qLz;UmmWGpjFUMQ%4W_z^vZOlg24Zlx4*(#b@T*PtZ1ZI){$Rk&OQ(Qrn`!H?!CNK06k2g9 zEyd4qB~2CmR~R%J8!%?y%3-s&+yLo&PqJbca(TxhHLKzznz8|vbB!8TGQH-Q+9j>~ z##5Pq&2dMiaeBjP6HXehp;90R7sM%GWGPcnV31I)ES!<2d zI*z)ceT54r<(kD|gs_ z^S>VK^_&e$a#63`YfTmX8Gdv!+FF}yJ-3w1nmn@lOAxLo>4TC+!hNdLbu-q|p2u9*8zaUlD$fZnn)? zp!#L)qC$2fD~qDx2i21ZiWAM0INE_>?YfYH7xU%cCZgm(1SJ8_-|vqTmO+9!>k(wt z7wiY#&T@c>L8FC&j2^&JtVK=|hxC2q_c~-%;-PU%a#aOF3RdE<1CYrKGH!n($roM` znsa{>8(^uGN-N3m2=RH|5X2d!BYRRR!*Z7Kk!~~5-T}snhs{IvM9Da(LYtkb|MSc- zyD%vELAQHp$@_2-=0)&@}{a8I`x$E zd7fAgk`PYb?JW{w3M7jL)y1NbUq=8RKvk8hnS_+S$QtP|5!d5Uc~k zpRYYJsWB>L%z$3-0gZBAphdTa)}Tpv!?JHt$5P4@o{HAiahuZvzm7mwaBlIOEfZ&1MM)3jbxHbc%hSrykKvLXG_L zpL)FAeT(k9*@eq#r5|51X(IfdOpEFC1@?0nunmxCRI&GZ#?Fv+V3wN z2FayZP79z)*`=HRrB-!{sB##Tk05^5dwuzHX8B4Uz3|2QZ+KdLl(s`zTe_DQxI)Y9?0fJtSJ#9$O>AkZqp#}n`qP=&zvW&|4#vxsc3#l3V>h-0jJ)C@XH2DLSLYwqB zdue(ueqc*+0&9|CoOl0f1(A*;97si&aKx9KWUH3lnP5-!fPW zueu(L56uwzD3ib;-8_TgJA|#TXj8(?>7XA70z53J3*Dz3e@M}+nj|BpWTnNpUimeq z=+JuQHIjGyZ!Cd~Ek${ll^bPkOs{x>+|$}qEX~1bJsP&5l))v8_K2W*PX%)%dH;#R z0g%yUG%g@6QG=J9(!~;$v6(HY@)$NIl$N-PKTIE_WOq3+3nbw;Go|Y(wjr<2V>D%V za52%K%z&v5ss=og#rp$dS!2b@#gl4AS^Fu4YT7{3{vE(chKM4{Up>f6pIanISo8(r6$H{1P8m9&7;0FICp+$Xncn zBpj|C6Lq|qEUaS#^B1&(KgK$77a9kQg_VON@f%tXl9QE@h?SW!(FjJ9oQ;TynTU}{ z8HPbsm6?d^e~{=uWFq4HUt}R-Vr<-nfrtJ7agXRx5K3|y(y9`P!59Ic%p9DFP?)qJ zFpP>NbwOicg7iTW~_iGi3xurUAm6S1+e6R|NSPGd^_ zuM!^C6&Ncs2YaG_0BIrvHaOt@mCHT%PvZJ3TjF}dEiAMtl$JjcSP&REDv@mfNC*@q zD>am;s2OHegtjRabC4loa>z?2JNko1VxI1`L*$CSaXtd$~PY2C7s37R(i=LSGBla?ruQgc6M2#P|%qt z3+7ZtZW(MQQUZ_pw9W>gy9b<@BV&7on{+<5Mo^y>7YD^v7s&JC>it><#q}@Z5#ns8 z&p$w~KH_uyqfY9R0HF_*>+9d@$4!(|%q|emi-65r%iG#kL4N!Gf|j30N7SfWwxDq> zOVEUT9pqTbqL5v*pf>=+5yFrl!+B_-?^@`LPQqlbIF3-o?!sMMQf}tmXK1fYCyF93 zi8msAL*;2=7Hl|iP!iV1Ct57rljN#U0*=_>VqqCU8AurtC7(|lw(Ei3nNc2vza=ZA zfL{toHTXZYFl@?e{|)3XK@QTO*n{G+2#FB%D4T$t1LjHe8V*1~+NI~#bI*ID$r?!I zD^-gN1@XEAmoJKdzc~@+5BS5rSs4QO{fkJxXAQ>LMj!@|E6BWZ#C?vPMb0I7mcKV# zh|Sm7_}-}=U}D-uZz@{3ZPS$*$&Bc;8r6E=bQOB^ux6Ljyj>q?BlTkS&(1VHlz9$#eB<4r4V+w;b@4LfKrqsRr|nItZho6h5kU*0wi+ zAPNrmEIVqcp?!0!SMETZbrO>KF@Tf0T|dtT){zx+(T9|0;=!=vzi=00w=21-L^rEw)R#rtu5qAkbrTNcwAnb)`0zGw>N;(`F<)M$%OJZ0vngRs83GF|S^t5L9-hw0KEY+}#>f{;pAjh! zusy~D|64UN@Wx&mRLlucAISw7R}Z+67*(R$a^<^-ybUJ|*b#Rj-H3eYf9@UBzaT1% z6u|8D17k(FX-D}tGb}NRNJKXwm~2Vg1gH^ZFeLQh=f_P~!j8IOdIH-B_l^9CxEq53K8CdF8MQn^<3uo#h4zk|Y2(^>20rDp;!~90|iR~?zYRa%HRTzdn{0&931fWeN zOclYq_Sv(2tqf+x7$KbQA$!p3$8hXVzsXTYcf?y4+!UoK<}R9?Wu6y5WlrJCa&*RQ zk5CQO9*!QA9@>+lI^|`~ku-sryQ6f+(B~5}!oN0{5Yi7Odr*II-y>W=?S#iFn%qNw zaW`ZB0s}&N2U4k0l$9Zh?wDZe2Uq{9vtoY*v&d`E z4Wd(r1)>3vBgdYfsf|`-l zoQNEK_HaGGvqR2zhi{Z$`f(!<@ZhjQZq&5G%4Mssk$B@nKKz#{(iw(3ExCN;Zpr+W#4_9B%9k|sFATc?w{bAn3@C7+zOn>nk zEMk>!*mo=QT;j1s^l;5yIc&>}^Tb^(o?WCmW(G1_4<~1oq;y?vD;)C`RbXt zj5!!T%*gvPOm1DrKTn*1SAI7t&jK@xg`{`T$h6RCCv6+n!!JKi+g96FPEPla4FX2+ zG>1UOGb$qDh{;2)o)qdUKt77P2wT=s!>{+qhx2Kw?Qj)0y=p7Dpw1j!g!?|L=eVNB@-Gyr>Q*CV*v8VPONMw=)OZsO}?hMReQrBJdr21** zCSwz1uVAFa&Ss4odKU_3bLlU%PLZ_v2=ZeDGvd^bV4sZPF-?Q)L0~)85^xAM zK27saz~5W-5C|xZXs)Osso4FObot|F(-GzpYoN_MuHBimw@!wN`%I{vlCZ1(4wUE#s(;93r5a ziP(h&lI$(#L?f4(g`7Rq5fyk6ed5LT=`h>aLCYtq{g3$x>A>(-1e9iGZ8m%3Y(W}Z zdN(y6*m^fOueOHdBNWGT^DE0)@K7=KAX#%@9>#6!0Cq)N8#@A!*KzV!f0@0f8uPZn ztsfpidN#Asy`n5Q#gZm~?P6Prq(w3vN{w}h8qfaIPTaF{U8gW@}iq zO00`uLQe{X_`OTad&M0@^TRT*@9#KB6gp@*h%%7;`zJ`^3oWS97iC}>l(ZXR9|y~s zO{nb!5bCh)3bp!c5hQ^Sg$uz2BhI5N?C}HuK<|g-2Hd6P2HnB`U;lc>6I`f)!yk7j z4*k%(x8JC{p#PD#51N;cL&|wG5cXJ55NbQ8Al~9-T)0HafitlqhuUTJb6CR=TAkRR z5i-X7UIl-gUKK=0L8%l=R;A*c@tXgaM@@Nab|Yw%r<*682jNEI6rjMKP9tUlAinkg z2m6TqAef%D3AF^Q3Ze?hik2%*(=T)zB^jLX zJI!TXkwill=+T>HG9d zpf6Bhj;>1B9*{dEIN3SO4KN%>(JH=@Y1irz@6p)T*s6RJ;!;@8ZX!O9t#De#9nT&| zhH~vA@kb0wTkUr*G0GuDabzOqiNGQf!WTPpB~lJ${w7W$J|!+CPW1@`#0;oG$;k@9 zxEmACj!&<8uma~voBKRX5Uw8zM1?WKrxMSAgw9-Y8shOxtlJHG-F$}!kK<`!V4}0xVdb{e3cS^Ps z?fUu!{toe5@v1QrphiiAMhr*`1-d|BA+m65NrZqAi(w_m)}6uc{-eGL@Por1*YP3L zV?oGnX_G8Ocsuu|VCSkAns#=%M%7|7McWMhbQV^bjEPWjod0kK)I)mx^g!eGwio_= zFAhHNGO)!ENExZq@Wyv9csmtRIu>(t6BS@1M6NkB?kzus+g|Whsk(mcdk>I}yO0JqNm3dAaBD}GI4{OJ^ zNU8{Ws!&Gnm`;@ry0^+|6aOfoX-t)$^#$v7rd$DxP29Et&Q~pwki!~7hyc=`>qL{b zs|8@)$HC!Shr>U*o1oNJ+J~45+3sOvy3ZL#tX9Aoa_oq?&Haw+r8RodG2q zWTyHZD(8LxE_-@ppcR{n*HeviD?gWfaQ;$3Bq&l(%+$ZdM?Ld+Q~4sy3k}T)$MA+- z>uVrs`J51$GZKn6*h*#*;QAehngUU}atU4JcmYxK2Is>(M*GPSXzAL+jAC*-`sOq( z?V#lxc7qR#lmY z>|HfqqWwyLo4o~Db2;&k2;NMwz36*`&TvZQ^|tv;m@reI=X^YfPmX>^SnZ$LjWh;X zop=lFW637+iV0r4Y_ic+EpHI#km8UTg+oq~;#HnVRI3=)&X%u~cC&HiT}VGF5%xqY z4XTy`2&k0fZ4i&cshsg&OD^2~S=m$y=P6!E6nwty(cf$6`LAyO?JuaY$}|@jS2ixB zRx0F!b@|m|uQ6J>8DSrnW+P1nD7IxbKMK*Zhy>`#A~~{4g24jG6M?U&q@qef=cot{ z=mwezo-%n@u5rG5MhPi+Dl3CBT|e9fQM3{QZn7GvKkMI@FzYEoPRwGmondSkB7Go- zepL?NHz%`dx4MthJL;lJa#1ngT?y`ocf%QSN$j~Omymw_?i*qQyAbmD_7`}n*T~+2 z{EEk&1hk`9$KJGsZlFD2)TsGBtU=Ii)QWJDR7ZTKeoqbh+c4&1IKCtQTBPJ=IEO#!hA*qk+_=T zka`kdNaPu@_Zz(K(AE;g12K=tuLcPB?@EZGwKsC1S6I%ByjBQq)xAP%w>Ibq*!bD1zM{Jbp)9Q*5O`XcsbE#t3ag$-p{uoFxNTnH)w zvJl~T_q6(z(ARz}MG;(AkRD zQ8;2i5YxGgA{o1=smrSkyUdjIhd?1oKs8%J;rQr$8(wj0!Z~PdxO^w(M>u7F(Z}~9j zPuDEhAA*1QhKif)g>YIPBLz-Lab;t0r&6n&T36X=)eIjv-9Alauh$lhl=WHx{Q%DZ z|AijFgSiM2B@DPC&z-4#SpR}4q(%I5zU--4DW(4CR#qQ2Gni&<*{+oi2u)~?gHoqQ z9Ks|Ml?28`7MCt6+9yEL0%7;ZNokXi5mj^KA9YS>f~>x}XO`E^<2vVB{_c5u7U=o7 zi^-o!T!Duiaz8w4kL=}*unD{pyZ@?x?i^YjQYoPPF;{pbHTe2^i`hLiIJj8-rM#}M zzlU6703rmvs)yazIh}I`z{{MgbK4f(D)jZh~+nd6!@YS#5z zH)>Zy=`c2MHY+x0(y3>z3p$oV*5_AvLz?5r49k8RKfO;fkiR&tK}IK7($yk@Ye(rbm#?2)!z~UK3xoA=^3G0)D{FU z&WaBce4bb@)&vkr@u45bDPUzyd_LZS!QG-p3Gn9-;L=BYDyn#t?C4go%aX#lSI3AJ z-YajJ!3R5upX}X0z~5@4>>jWhVTmW;?lYW@iw^gMfcMO|Ka8ZqwA;B_Pvf4tp^G~M z7lis~1_prLbaZtn2$1?A`JzB#gmQE_;qAf# zm7g#7x_MfeB$5#U{Pj5Ly+r|%9u`>7IM7#Gbh!7UWtYo!M=2(JHkG!5N~ilQ;O|dU zc%o*Gx@9B%cyd%iu2P3AEsxwLrtO<&xk{1>k8|mW`pwKM{RJ-@v1;M#*#w2}w?hrx z3V2%6(5^Y42bg~<#G?%>2S*ygsc6kR)y9OsA zA%mn8yYt=G$IY$7CoIQ2q-fHKvR!(vsH81`iwmc5R+Zr`V1+kTK_%9EJ!Pwlg3o#N z#r{~vN5Ia!8sZ3Ljx95z&P1ISFd;0(#|qZSN>2t*^qt5(KkTzBWKravm`Y$~my;Yt z$fm(xhdXhxWjd54#~%lYaJf?1qosT#mdw)Tals*uheK=D-gpjT`&5(cEheE-H%;#-nmK)<7bvkPdcBP zmL^SKbU%%BK>mzShQXf!6Q0oCQOCjzs84YrD=-DX9r1U_&hw|VPicXXyoKZYK);0;oT(wuZbQ~na)IHq>90Nef1&!nyLXHQ9cdrzkJwnZ~g-9R`Fi3)dRPP%1sJ+ zz$r~eHO-f$z9*@(yqwdKKPKi(!`3ACYy5F|NArjshPZldY)$1UY zWnU<70?s*gz5C*e^YDTroO-&pYEDJ0I#sF%ZHYg}js(Na&gu*ftAXy2yTJ8E6EKat zH7p>FkyYW0#2UC7KN>#5V1oH*n9KlmWovOD%4?yK34CK$O`dV{)sXI#;OHs@rmktc zbwF{F%8dP{-y;sxYj(q8BK0s7CUaB}S$Cc&A$N>*kw%*~ebVEB5`JB>z#4I;KLY^; z#`x-VILasfS6Uu9aYi#;o?mB8_YBu%m75rw)(ZLOYSJ|exHXxdm28>0 z^ZT%(>TW{<=H6FQcc{)h~^aqQfVJ$nEJ(3Q}j94(upBXRlLQEe_Vh@GQR?({`OLw|8{_8NKv zk-RzUr#)3*5D0tg-djO-Bi~W~1`F*O@89WnGt>uZcO@1=&!hg%m^T}R1_~2^6&A%y zc&aFq^2uM#&aX(!7w@mH_G%SG>4#o2-<+F3E~-B2c9txSstPqZWj?^>)wO~8nS?8~}Vr0%$lsz1O~!mk-Zx$(_!_yDo% zcs*IuL(|=AeK$f1qtw*HTmc*Dj;NB%K*cy1=g3SGN8idMWnb42$8wpwS%2C=+8}~% z88IhgFg6<@J^Yn4Sm=0Ein?|gRF0M`KvgF?m71csTt@kj0*Kasj|`x;wOk@!bJ##k5RQ z8~|){Ae??TJiPB965pd=mdXY_-M}`%*RmbM=dX7zVGD?;6U0>!uF&^{38M>v<)U?} z7RkvPwlJ%A_5D%$mbO(MVcnA%kY;awD=!?B4bOaPgTGzoTaIVL zQ<(s08hnq9nAYC7xBQ+WAs#X1cqjPvAJRKC_^0k)1@wwNMh6nnCcVQ5SwW3M*%Tf2 z>pzu;kR`Q6%*EZEC`rcHXS67bG%%a*k#Lk!F@O}*WT>}L4;(G9b^Y0quua%PzYWd=3)YqZh+A&^~9%4t3#KdK>DdLK$Es0-)x zIKWeWMk~=Yi8lysug=x01iybI=!AHpV~bh*o9oTS5I02wDLT+!okNoR%^v$8N6zTK z38*aCN$6qNuNt#o)u9JYGj`R3=k-uS0Mp_iFgJ2r=QXfkJ5(XEb+kn3h5nx1%Gbsy zVMwA_i4ty~B@NsUB8_-spl($VqUA!66OiE7+)^3}##8JC^ph1^F6P@rtvdqS6(Pe8 zO`c4}MFb{@wxmT)ZBCV>pSyK&r+tKG^5BU_E`c&CLOXa<==wm!tAZL3yW-HwCfc(M z8(1~<0Q{&0(oZSR{dBl6Okc+EtQYZ&2=S%qVEReM5lm@>!a+nmKm^X`Csb=K2dEW? zVZb&_4oA)&5VA6JZ_D#EI!%jOdMMr4!A*3#S_x^7C1?r3nDTB39p7;ixtNPs$_PIs z%&g;Am-TVHTzl>`j#V5zIgS4J)x3sX0BN-2LU?6@(wl=b!#9? zPccWO5H86~Rh*8e!*~*L`f^O;6o44EVXcpBza}%C3U-behutXhL+OwqZF_+JnZQJqleBA6SM^(~7LUXM0l-r0Vu_Bi zW6Y%JZ(1pb!RUvJJ=`FYBlfM#XVio^hAri7(RT^mD@*|jU6ucp#vv3g7m%P^`$Sq5 zBFgCGD_coK{L+$C6o@0cEFFVTg*=8p2WCa&6x;_rby}{VejLUB5lN?$6B4^z6SnJ1 zrr*CI;CRjHxtda*S>tls2@uT1{DqzdpCmog`aDL@WFit|)_>nfb)E%YUIrc``9_2*{B19u(<1x~8>3nqU4mE( z#BmW>Bh34j8g`)@ECXXJPOvha@Dp59B*m=ambJw+oxdn(!&$Q*_7j6BfM9hL5wowt zY*7aEX>7;^J@-vd0YFrOY_pm_;bylcGVrZ4|4l=zQAsxEgQ0|Plw3*s55FYL3W*y5FX1&0TNiwxgTZRLSroOv^E#f z*SlnkOFWXU$6Gq4#GU(CY0pkUg=}gj&=nCy{Ap$6?Oy%xK}g8*31yZQNfzm*Lz;Fs z$uRiiTcA0dS!asAARHL@s8b=w_gM7c2udL9trVRs^QTKVyy|$kh68!2D#(b5UJZK{ z$RT4FL3hnX00&EJd_$A6n&07m32184jC@7_LsTewcrXXZttk@Ym&f1UT00NJ3wBLw?`a~ga)*osr8DHVx z!ZwmClc-|y43%*J6#WI#3>~E$ki-#KrYY$0PfVjfAOTbP+<5}QV_ETq`EplZ7DZSK8z!meO zdE)>S3p5qFIt@a6e~+VDF)Px(n5~=UPf)fhFmPI>(~vreFV@J zY6mK5!i{sb*6e(dI@47~xniAEz&)bH73uL;-&5Kztj;0m7lH0zQc0Mi*R%}^`-`WR z-a?32Lw4j5w>+|okIiT$dtP^+1M&z}a2_a=OspfcV$Q5X)7b5T7?(hHajX zz5>Eq9c>&MI=P_?$eXE$3zxURGN7~_6^sj0tbyS-k*lHe(jiZZp<&sVlczw$ zaJON|ov6~%R|vIbW-k+l?~d>WwVHD70O-mi29@q7nJ=yVKkr(>#^eGTmWi`UE_X7) z2=B_n)IBo96sO9~PuZ5xG72y_fq6P<%(^4IL4?Mf*nw8y;2~)VVp&8Qb6vXNSogH8 zB6;chTz@Xrh`L0qq)5^NfyDz(7m85M`101d)^*{NND{&}@>W!C{S*0B?cE z7xDeC`F9Ct{&n)O`Q|w$nocC6lVIt1>M#Cv(vyr$!qAH;^ut3PI@S6+Hs;};62jHW zM$b;Jw}PYlItOka& zt0ju{KqBX!8*gN1Vlr^36Y)T~6W2*!|DYu@dGzqbaVZqR@S4gQlcC39FlkRT_UtX6xHC0Vulfk0gio>Irs&Q z%jmm5AJLX1>6F&uiTgINfVW-(PACeK@}d6Uk32{CL~;2txmugd)%g{Ei+`0aAxrSk zl=5#Y1o51#-qF!>I)a#f^!jtT4Pg5l1F^y#u40#~tjAQ* z2fO@Nz?&vb6~@di(S;Wql%0(uF^-oXLQF$JU0khkiFXnBf4Q0;1sDKuKwHND?fG_e ze;1Mi8T+%p)=i(9iz!v0OoT>1t|uw!CkS+lbVNTsOh%s2?|@GGG!l>uS{|VYE>SE{ z6-SZ@E5e~@W$LnIr8YNTVJ2SQ%Z-oy85t8{{<+?LL>9&T9_YB+_5I_0>$7v(?bYek zeaR7I1tJz+I--`J!wz7s4Ob9s)9Dc5gXXzJjN_t<*Z*(v3NGrcp)*^(4ZZn-q*QUZ zQWH&j-MACjTgiuKEjM&7GnRhsKxXR(di3;iv%`bxwxT4dv)Yjo@3Ep&N4K5NBQa9i zSa-ZBvb`_*GejsNf2-v#aT~S`q_xq=&zms&)%Qxx@%&_~b^)~s{1ZkT)7|)zxFDbL{K&-?q^5wk& zIv%!;z#(5)VjO*;cv`p){=b0&pabPPyr_~T`r@su$_D?ymJ)6xqFFf)0cslR#ylP;GvQ>Ys)PbPc8b*h(B zl>xWi6*Njk6Fnn(&J$Pie4JV9e`|6&Cv#4eF|k%l!hX+)?x%NTl@v2$kXf8ZvSQ|T^<*wCkJ(

s1vajK(GIHTopd&RF!qlt8rM-kKSfe)KNTHSRHcpkz}_IY@bp^ei7mIFxjPRh66iE#Y>g3(PaxTb;6>Iy z2gVZDkIik@hB|7CM@N>tU8-fd*&P4=@~-vBYynvH=)J~ZB`thCu-MF@H(n|T{@rv@R zdhqN&NpTYi8L*B;d8x>b(71_ByQYV2#oiA)xGrVibpik~DXyX=c#(5a9v~nxDpzW; zSpX|9N1B(FJw{d3g^kZ6n$zZ;lOx(DL7CC@D_ADgOe5AWteGa*iLb7#YTNUX+f<+2 z7iP_QQq?*g6SWihei|kU1Lxa<2S{dNvx@#$#dt;#QlcN5Ww%&P9>G8HZy;uH?w7v@ zG<9Wx;>RJUv&F<6u`i3r4Rb1UuxA+m(g6C#*>8VqOA4RJGsRc;uh1n6AwF0ZpIMf~ zd&PYjvJ3c@6wWOd1?MOGk1U^w^>?_QRDgc3(l27M5}&!% z6qzh?Qf~g$K$bisERET6Rs3IbL_j^?m1|9yPXBv5p`*JK;eF)$@|XCJ>plW8{S6vn zOA)-moWdEynf)A^)7*4ZPK%*i=^5*HYL6lBN5+J1Re)N(j$(nW0LK_Yols3YeEs4U z@e93IuFnL$6G`ff+(|^cz8%NvX!e2rKF=H97wK2$7r0T*SUBVmA|3su0U$Ipv=y

(ch{-zLA*1EY|w3*g;_jDqV7p;LHg&$7x*-%;TNC0&jYQA%-K3dkIDTqunEh z2TX9KG)h?v3@Fzol{1W&d;l*M@1LPyjp6kJUdQ@2<*10w;cV|n4{`6shT(=ulvZ!+ zcZ!%{h)eEE`KlS2wZ>Uv27nK=E%#jN;`P!%S5^9pF&jc1(r{g;_ImeTWhl%O+ZTo} zutvnTL&D8~-L^!g6;E#l!kPVj=o!NrmEIY%bT4|v81WBCr87seF#t0fO~FXXNXR$G zrsKhQ~pZ71L2Gtrz#AvZNKl@^zil40DaE$V-Y)$SuLr>OoIP!U(Uw333=f)YUL z5>6VH+fcOd%skKN(konpp(z4UVa zG^b(t#@JmsSHx5c7Gxxd5qToEJ@Opr8pG165=u2`uPPQOC#!UUoWpS@M1y3U?|WN?7OSK- z$ZH+yth8@KDKn{JVw$WMI_UR%1=OF_5IC#dhb^zT=g9;x#z5d=1WvW~VLVabHLVdk z-biD*#y->P>~ON9e^g%m+<13E!(15w6G007RL6Er6YeE0(<)kv@vGi} z-(N)&Lv@OM;GHw~3MU|hF1e0NHfgJ;SC$ru4b1Tsmdy94`=HVcv z$|hKel1rIAV?^m-rKyQ=&B|Qd*#| zIo5X`^nwZS(;U|VXwiAbJ$i!lwny57XY^08FWbem8s83(I`F1@*?cX6(J2JT7_|%u z_`x*(3jlfQxKCF-=a20RmUB5@la|B$YX_xen(I9<4U24nn9W*c7ikbJ4nu*to7j70Ca}Zss z$OJ0~b_yM0P~htZD~BUw|6Rj;EpZ4wE?MxB34mSGAq}Sy8)|ghhV}9%KE|jGBFzV4 z5VnUW#AcLH*WD}xliU&1ly8on72B>&8jb-6aWHap_%4BLfeDTSmHd_h(cp`9#iq!l;z*RKNgcXG|# zk}Pk7nYCcCECfDV02Y4%W?ZBstN74Ttf}FR^B)Sa%w)~1i}^{RI&^0f!!J4iqgXRJ zZAaLxw`p1`!HD}Lhh7-VOvnC9%)`QhG&76;z6`DZYQS&FnEPTvG8;{V&7fYqgS~_d z6jxy*FukVAbNr-b_ELJ5_1Z5awwswsqK-5HFjL|`X+8)EC2etKp~h}$IN-!WOsvFR z8NL5!OB9xU1^w?!qA7IyrmqRHZ6)_Fg+ir$K)%Uiu^A$)$#) zY{3qPdLR~5rO{-ZBWOd_d#{()c%ul%C-M$RSPsdBN#d}G^6|CvO}==<1{hZfy_z1e-?^S9|jGC=)|+A>ej?w`x?;`<+Cf1!@`m%9cW zzRsDa-;-dhTD0qGIH5#7LU_W_5UK11Y-#BHB$%J+3r2aSO&A*oLyT@w__TfYK562B zk+>SfJvb7WF{|FNXqn&b&+okYOq(d1)Za-VY3!oFR3Tg;q9HJ7#KN8X^ZJ{~XhN+5 zQmdq{6O?|je*-h9mo~8Q!vQN*2wO-3@Jwjx-o)1|H#Pm!_wf~xM!TnB zM+NOznsF=4KA#P%p(Ln(GlYBmJKpig z3AYBDR=f z1RD=mJ~4mAv`=*up-Uh}VNRhxeE=^x)hU2}p*uj1b8JWYx2P9~cgmDHuNT|8$f7^6 zSmTWRVr1qb^91HcF#;WHZusRY1O_Fhsy*W^_oj?=vqV@PkKnF7QLaB8j;521g>0Dt zipMHNv~4Nm#c=2_+o5MEg91t)z!}PLzs{h5PDL_@C03?^Czah29uU!BJoGYtUjD8Ibjt?0SQ2 zLiEMzbZ&f=8rSRxZx;u&BZLR;GQ(--1Ezc4k%O%(EFF%h=BK05pRNL{Q1XkU$r~+P z$6Yen->QUy^UD*wX|D$cdsGb>W731r|NUag#)$5K#fe|5SqmDaZ$I$G@KAI=So`O$ z=zeqdKmTW{`g}CnEnjiu;INrs`V+caZv3ta?3b43DDtFG~QwDLs=Q%7-$`Zp3Az^`$l;0$@@p0fT8dbuO1abfy? z#KJ4SQOw+n(FSDka^sAVoR^iZgN?eXFV(?H6HBZ^IC|GBYS907{q!gpV_12yg`TTeZ+t(z%_rCZ&2x_}dN zM4E!HyZM8j3YBE2bX8RpsQ2vG*W-f(+WW`!^if0wvc7ZghiY-?Q*z{M2!}(1H&cRr zttQL3KJXlJ7cm{UEga7)wYGGYy40sdgGl`%3lMRD!jxV+RjaLN4@A}!zI𝔰o9s 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 z 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 role: reviewer +reviewer2: + name: David Reviewer + email: david.reviewer@mailinator.com + password_digest: <%= BCrypt::Password.create("password", cost: 4) %> + role: reviewer + admin: name: Alan Admin email: alan.admin@mailinator.com diff --git a/test/models/reviewer_to_quiz_test.rb b/test/models/reviewer_to_quiz_test.rb new file mode 100644 index 0000000..43282af --- /dev/null +++ b/test/models/reviewer_to_quiz_test.rb @@ -0,0 +1,8 @@ +# frozen_string_literal: true +require 'test_helper' + +class ReviewerToQuizTest < ActiveSupport::TestCase + test "the truth" do + assert ReviewerToQuiz + end +end From 3f77a00870c1e1499d15a7fc7671eb9886ad55d7 Mon Sep 17 00:00:00 2001 From: Mark Moser Date: Thu, 15 Sep 2016 13:40:43 -0500 Subject: [PATCH 2/4] remove hard coded review email addresses --- app/mailers/reviewer_mailer.rb | 9 +-------- test/mailers/reviewer_mailer_test.rb | 2 +- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/app/mailers/reviewer_mailer.rb b/app/mailers/reviewer_mailer.rb index b4eee1b..0f06024 100644 --- a/app/mailers/reviewer_mailer.rb +++ b/app/mailers/reviewer_mailer.rb @@ -2,14 +2,7 @@ class ReviewerMailer < ApplicationMailer def candidate_submission candidate @candidate = candidate - - # TODO: candidate.reviewers.map(:email) - if Rails.env.production? - recipients = ["harish.bhavanichikar@perficient.com", "jacob.schulke@perficient.com", - "jennifer.siegfried@perficient.com", "martin.ridgway@perficient.com"] - else - recipients = ["fed.reviewer@mailinator.com"] - end + recipients = candidate.quiz.reviewers.map(&:email) mail to: recipients, subject: "Skills Assessment Results" end diff --git a/test/mailers/reviewer_mailer_test.rb b/test/mailers/reviewer_mailer_test.rb index 45bb811..6241752 100644 --- a/test/mailers/reviewer_mailer_test.rb +++ b/test/mailers/reviewer_mailer_test.rb @@ -6,7 +6,7 @@ class ReviewerMailerTest < ActionMailer::TestCase candidate = candidates :dawn mail = ReviewerMailer.candidate_submission candidate assert_match "Results", mail.subject - # assert_equal [candidate.recruiter.email], mail.to + assert_equal candidate.quiz.reviewers.map(&:email), mail.to assert_equal [ENV["default_mail_from"]], mail.from assert_match candidate.test_hash, mail.body.encoded end From 3bd9d3364c1550017463817db47bfc2719470ff4 Mon Sep 17 00:00:00 2001 From: Mark Moser Date: Thu, 15 Sep 2016 15:09:47 -0500 Subject: [PATCH 3/4] removed hard coded emails for reviewer submission --- app/controllers/recruiter_controller.rb | 2 ++ app/views/recruiter/form.html.erb | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/app/controllers/recruiter_controller.rb b/app/controllers/recruiter_controller.rb index 4b6731e..8ca72cc 100644 --- a/app/controllers/recruiter_controller.rb +++ b/app/controllers/recruiter_controller.rb @@ -8,10 +8,12 @@ class RecruiterController < ApplicationController def new @candidate = Candidate.new + @quizzes = Quiz.order(:name) render :form end def create + @quizzes = Quiz.order(:name) @candidate = Candidate.create(candidate_params.merge(recruiter_id: current_recruiter.id)) if @candidate.persisted? diff --git a/app/views/recruiter/form.html.erb b/app/views/recruiter/form.html.erb index 1a71a96..386de96 100644 --- a/app/views/recruiter/form.html.erb +++ b/app/views/recruiter/form.html.erb @@ -18,7 +18,11 @@ <%= form.select :experience, experience_options(@candidate.experience), include_blank: false %> - <%= form.hidden_field :quiz_id, { value: Quiz.first.to_i } %> +

+ <%= form.label :quiz_id, "Quiz" %> + <%= form.select :quiz_id, options_from_collection_for_select(@quizzes, 'id', 'name'), include_blank: (@quizzes.size > 1) %> +
+ <%= submit_tag "Create" %> <% end %> From 96250c45219bc4b933356e9831fec5dbff8fa893 Mon Sep 17 00:00:00 2001 From: Mark Moser Date: Thu, 15 Sep 2016 16:11:44 -0500 Subject: [PATCH 4/4] admin can assign reviewrs to quiz --- app/controllers/admin/user_controller.rb | 2 +- app/views/admin/user/_form.html.erb | 7 +++++++ app/views/admin/user/view.html.erb | 8 ++++++++ 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/app/controllers/admin/user_controller.rb b/app/controllers/admin/user_controller.rb index eea95ab..f344909 100644 --- a/app/controllers/admin/user_controller.rb +++ b/app/controllers/admin/user_controller.rb @@ -45,7 +45,7 @@ module Admin private def user_params - params.require(:user).permit(:name, :email, :role, :password) + params.require(:user).permit(:name, :email, :role, :password, quiz_ids: []) end end end diff --git a/app/views/admin/user/_form.html.erb b/app/views/admin/user/_form.html.erb index 7b254c0..c3b5266 100644 --- a/app/views/admin/user/_form.html.erb +++ b/app/views/admin/user/_form.html.erb @@ -15,5 +15,12 @@ <%= form.select :role, admin_role_options(user.role), include_blank: false %> + <%= form.collection_check_boxes(:quiz_ids, Quiz.all, :id, :name, {}, {class: 'checkbox'}) do | quiz | %> +
+ <%= quiz.check_box( checked: user.quizzes.include?(quiz.object)) %> + <%= quiz.label %> +
+ <% end %> + <%= form.submit %> <% end %> diff --git a/app/views/admin/user/view.html.erb b/app/views/admin/user/view.html.erb index 0bd3f52..9c5ec88 100644 --- a/app/views/admin/user/view.html.erb +++ b/app/views/admin/user/view.html.erb @@ -5,4 +5,12 @@

<%= @user.name %>

<%= mail_to(@user.email) %>

<%= @user.role %>

+ +

Quizzes:

+
    + <% @user.quizzes.each do |quiz| %> +
  • <%= quiz.name %>
  • + <% end %> +
+ <%= link_to('Edit', admin_edit_user_path(@user.to_i), { class: 'btn' }) %>