Help refactoring

20 views
Skip to first unread message

Dave Castellano

unread,
Jul 2, 2013, 10:49:21 PM7/2/13
to rubyonra...@googlegroups.com
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.

if @formatted_question[:anno_a].length < 2
@formatted_question[:anno_a] = @question[:correct_anno]
end
if @formatted_question[:anno_b].length < 2
@formatted_question[:anno_b] = @question[:correct_anno]
end
if @formatted_question[:anno_c].length < 2
@formatted_question[:anno_c] = @question[:correct_anno]
end
if @formatted_question[:anno_d].length < 2
@formatted_question[:anno_d] = @question[:correct_anno]
end
if @formatted_question[:anno_e].length < 2
@formatted_question[:anno_e] = @question[:correct_anno]
end

--
Posted via http://www.ruby-forum.com/.

Dheeraj Kumar

unread,
Jul 2, 2013, 10:59:37 PM7/2/13
to rubyonra...@googlegroups.com
@formatted_question.each_pair do |key, value|
   @formatted_question[key] = @question[:correct_anno] if value.length < 2
end

-- 
Dheeraj Kumar

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com.
To post to this group, send email to rubyonra...@googlegroups.com.

Dave Castellano

unread,
Jul 2, 2013, 11:15:49 PM7/2/13
to rubyonra...@googlegroups.com
Dheeraj Kumar wrote in post #1114259:
> @formatted_question.each_pair do |key, value|
> @formatted_question[key] = @question[:correct_anno] if value.length <
> 2
> end
>
> --
> Dheeraj Kumar

Thanks!!

Dave Castellano

unread,
Jul 2, 2013, 11:38:40 PM7/2/13
to rubyonra...@googlegroups.com
Dave Castellano wrote in post #1114260:
> Dheeraj Kumar wrote in post #1114259:
>> @formatted_question.each_pair do |key, value|
>> @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 = {
#id: self.id,
#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",
correct_answer: self.correct_ans_1,
answer_a: answer_list[0][0],
answer_b: answer_list[1][0],
answer_c: answer_list[2][0],
answer_d: answer_list[3][0],
answer_e: answer_list[4][0],
anno_a: answer_list[0][1],
anno_b: answer_list[1][1],
anno_c: answer_list[2][1],
anno_d: answer_list[3][1],
anno_e: answer_list[4][1],
anno_pict_1: answer_list[0][2],
anno_pict_2: answer_list[1][2],
anno_pict_3: answer_list[2][2],
anno_pict_4: answer_list[3][2],
anno_pict_5: answer_list[4][2],
correct_ans_pict: self.correct_ans_pict,
#author: self.author,
question_pict: self.question_pict,
question: self.question,
correct_answer_position: random_insert + 1,
correct_answer_letter: correct_answer_shuffled
}

I need to target just anno_a thru anno_d

Dheeraj Kumar

unread,
Jul 2, 2013, 11:59:10 PM7/2/13
to rubyonra...@googlegroups.com
[:anno_a, :anno_b, :anno_c, :anno_d].each do |key|
   @formatted_question[key] = @question[:correct_anno] if @formatted_question[key].length < 2
end

-- 
Dheeraj Kumar

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-ta...@googlegroups.com.
To post to this group, send email to rubyonra...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages