i'm attempting understand difference between these 2 ways of assigning virtual attributes in rails 4. 1 of them causes "stack level deep" , 1 of them works fine. i'm attempting use new activerecord array field parsing textfield , splitting commas create tag field. working code follows:
class post < activerecord::base def tags=(s) self[:tags] = s.split(/,\s+/) end end however, when change assign tag field in model assigning class variable, causes "stack level deep".
class post < activerecord::base def tags=(s) self.tags = s.split(/,\s+/) end end can explain why happens me? seems using self.tags causes virtual attribute run until stack blows up. part of activerecord causes this?
the stack level deep error has nothing rails. basic ruby class this:
class post def tags=(s) self.tags = s end end > post.new.tags = "a,b,c" systemstackerror: stack level deep calling self.tags = re-execute tags=(s) on same object, on , on again. in first example, you're directly setting attribute via self[:tags] =, doesn't re-execute tags=(s) @ all. assume oversimplification of activerecord first example of model's fields.
Comments
Post a Comment