def capitalize_first_words
[:question, :correct_ans_1, :correct_ans_2, :correct_ans_3].each
do
>key>
self.key = key.gsub(/^(\W*?[a-z])/) { |m| m.upcase }
if !key.blank?
end
end
But, even the following causes error: undefined method `key=' for
#<Question:0x007fcba5972f20>
before_validation :capitalize_first_words
def capitalize_first_words
[:question, :correct_ans_1, :correct_ans_2].each do|key|
self.key = "x"
maybe
self.send(":#{key}=", "x")
or:
self[key] = "x"
Not sure of either. But your instinct is correct, key isn't being evaluated before it is passed to the self reference, so you're still looking for a key method that isn't there.
end
end
key is still not being interpreted as "question" or "correct_ans_1",
ect...
Could it be a scope issue? I am in the Question model.
Instance of Question doesn’t have attribute “key”.
If this is ActiveRecord, you maybe should make migration “add_column :questions, :key, :string”, OR within class scope write “attr_accessor :key”
Instance of Question doesn't have attribute "key".
If this is ActiveRecord, you maybe should make migration "add_column
:questions, :key, :string", OR within class scope write "attr_accessor
:key"
, 4 2013 ., 15:17:47 UTC+3 Ruby-Forum.com User
:
I thought key was a variable containing the attribute. The instance of
Question should have the attribute contained in the variable... It just
doesn't seem to be evaluating key.