before_validation :capitalize_first_words
def capitalize_first_words
[:question, :correct_ans_1, :correct_ans_2, :correct_ans_3].each do
|key|
self.key = key.to_s.gsub(/^(\W*?[a-z])/) { |m| m.upcase } if
!key.to_s.blank?
end
end
Note the difference betweet self.key and key.
self.key calls method key on self.
key - is block local variable, which is instance of Symbol ( :question,
:correct_ans_1 ...).
Symbol has not methods '.gsub' and '.blank?', so it must be converted to
String to call '.gsub' and '.blank?'
среда, 4 сентября 2013 г., 1:03:10 UTC+3 пользователь Ruby-Forum.com User
написал:
>
> Now giving error:
> undefined method `key' for #<Question:0x007fdff26b7798>
>
> In Question model:
> before_validation :capitalize_first_words
>
> def capitalize_first_words
> [:question, :correct_ans_1, :correct_ans_2, :correct_ans_3].each
> do |key|
>
> self.key = self.key.gsub(/^(\W*?[a-z])/) { |m| m.upcase } if
> !self.key.blank?
> end
> end
>
> Am I missing something really quite simple?
>
> Thanks
>
> --
> Posted via http://www.ruby-forum.com/.
>
--
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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/rubyonrails-talk/8bd8a4a0-2626-4fe8-958c-64d8c9939a9e%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.