9.3 I’m getting a strange behaviour and I cannot understand why:
s = self.shopify_p
s.title
=> "Disco (Wholesale)"
Right now I’d like to have a new variable with the content of s.title without the ” (Wholesale)” part.
So I do the following:
original_title = s.title
=> "Disco (Wholesale)"
original_title[" (Wholesale)"] = ""
=> ""
Now if I do:
original_title
=> "Disco"
Which is ok but the strange thing is that it seems that the last string replace affected even the original s variable:
s.title
=> "Disco"
I really cannot understand this…can you tell me what is happening here?
s.title should still be “Disco (Wholesale)”…or not?
Variables in ruby reference the objects they point to rather than copying them by default. So, if you change the underlying object, any changes will show up in any variables that contain a reference to that object.
If a, b, c and d all point to the same object, changes to any will “change” (be visible through) all of them.
If you want to keep your original value you’ll need to somehow create a new variable.
For your case @wlad’s gsub (note that he didn’t use gsub!) suggestion seems like a good one.