# Help refactoring

**URL:** <https://discuss.rubyonrails.org/t/help-refactoring/67344>\
**Category:** rubyonrails-talk\
**Created:** [July 3, 2013, 2:49am UTC](https://discuss.rubyonrails.org/t/help-refactoring/67344 "2013-07-03T02:49:21Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![11155](https://avatars.discourse-cdn.com/v4/letter/1/d26b3c/32.png) [@11155](https://discuss.rubyonrails.org/u/11155)\
**Post date:** [July 3, 2013, 2:49am UTC](https://discuss.rubyonrails.org/t/help-refactoring/67344/1 "2013-07-03T02:49:21Z")

</div>

Hello,

I'm learning rails and starting to try to refactor code that repeats itself..

I have several lines of code like the following and wonder if there is a more efficient way to do this. Any suggestions would be greatly appreciated as one example would help me figure out how to refactor alot of my code.

&nbsp;&nbsp;&nbsp;if @formatted\_question[:anno\_a].length \< 2 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@formatted\_question[:anno\_a] = @question[:correct\_anno] &nbsp;&nbsp;&nbsp;&nbsp;end &nbsp;&nbsp;&nbsp;&nbsp;if @formatted\_question[:anno\_b].length \< 2 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@formatted\_question[:anno\_b] = @question[:correct\_anno] &nbsp;&nbsp;&nbsp;&nbsp;end &nbsp;&nbsp;&nbsp;&nbsp;if @formatted\_question[:anno\_c].length \< 2 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@formatted\_question[:anno\_c] = @question[:correct\_anno] &nbsp;&nbsp;&nbsp;&nbsp;end &nbsp;&nbsp;&nbsp;&nbsp;if @formatted\_question[:anno\_d].length \< 2 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@formatted\_question[:anno\_d] = @question[:correct\_anno] &nbsp;&nbsp;&nbsp;&nbsp;end &nbsp;&nbsp;&nbsp;&nbsp;if @formatted\_question[:anno\_e].length \< 2 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;@formatted\_question[:anno\_e] = @question[:correct\_anno] &nbsp;&nbsp;&nbsp;&nbsp;end

---

<div class="post-metadata">

**Author:** ![Dheeraj\_Kumar](https://avatars.discourse-cdn.com/v4/letter/d/439d5e/32.png) [@Dheeraj\_Kumar](https://discuss.rubyonrails.org/u/Dheeraj_Kumar)\
**Post date:** [July 3, 2013, 2:59am UTC](https://discuss.rubyonrails.org/t/help-refactoring/67344/2 "2013-07-03T02:59:37Z")

</div>

@formatted\_question.each\_pair do |key, value| @formatted\_question[key] = @question[:correct\_anno] if value.length \< 2 end

---

<div class="post-metadata">

**Author:** ![11155](https://avatars.discourse-cdn.com/v4/letter/1/d26b3c/32.png) [@11155](https://discuss.rubyonrails.org/u/11155)\
**Post date:** [July 3, 2013, 3:15am UTC](https://discuss.rubyonrails.org/t/help-refactoring/67344/3 "2013-07-03T03:15:49Z")

</div>

Dheeraj Kumar wrote in post #1114259:

> @formatted\_question.each\_pair do |key, value| &nbsp;&nbsp;&nbsp;@formatted\_question[key] = @question[:correct\_anno] if value.length \< 2 end
> 
> -- Dheeraj Kumar

Thanks!!

---

<div class="post-metadata">

**Author:** ![11155](https://avatars.discourse-cdn.com/v4/letter/1/d26b3c/32.png) [@11155](https://discuss.rubyonrails.org/u/11155)\
**Post date:** [July 3, 2013, 3:38am UTC](https://discuss.rubyonrails.org/t/help-refactoring/67344/4 "2013-07-03T03:38:40Z")

</div>

Dave Castellano wrote in post #1114260:

> Dheeraj Kumar wrote in post #1114259:
> 
> > @formatted\_question.each\_pair do |key, value| &nbsp;&nbsp;&nbsp;@formatted\_question[key] = @question[:correct\_anno] if value.length \< 2 end
> > 
> > -- Dheeraj Kumar
> 
> Thanks!!

Oops, that will not work as the hash contains other attributes.. formatted = { &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#id: self.id, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#complete\_question: "\r#{question} \r\r\r A. #{answer\_list[0][0]}\r\r B. #{answer\_list[1][0]}\r\r C. #{answer\_list[2][0]}\r\r D. #{answer\_list[3][0]}\r\r E. #{answer\_list[4][0]}\r", &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;correct\_answer: self.correct\_ans\_1, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;answer\_a: answer\_list[0][0], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;answer\_b: answer\_list[1][0], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;answer\_c: answer\_list[2][0], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;answer\_d: answer\_list[3][0], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;answer\_e: answer\_list[4][0], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anno\_a: answer\_list[0][1], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anno\_b: answer\_list[1][1], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anno\_c: answer\_list[2][1], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anno\_d: answer\_list[3][1], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anno\_e: answer\_list[4][1], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anno\_pict\_1: answer\_list[0][2], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anno\_pict\_2: answer\_list[1][2], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anno\_pict\_3: answer\_list[2][2], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anno\_pict\_4: answer\_list[3][2], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;anno\_pict\_5: answer\_list[4][2], &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;correct\_ans\_pict: self.correct\_ans\_pict, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#author: self.author, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;question\_pict: self.question\_pict, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;question: self.question, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;correct\_answer\_position: random\_insert + 1, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;correct\_answer\_letter: correct\_answer\_shuffled &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}

I need to target just anno\_a thru anno\_d

---

<div class="post-metadata">

**Author:** ![Dheeraj\_Kumar](https://avatars.discourse-cdn.com/v4/letter/d/439d5e/32.png) [@Dheeraj\_Kumar](https://discuss.rubyonrails.org/u/Dheeraj_Kumar)\
**Post date:** [July 3, 2013, 3:59am UTC](https://discuss.rubyonrails.org/t/help-refactoring/67344/5 "2013-07-03T03:59:10Z")

</div>

[:anno\_a, :anno\_b, :anno\_c, :anno\_d].each do |key| @formatted\_question[key] = @question[:correct\_anno] if @formatted\_question[key].length \< 2 end
