0
我试图理解这两种在Rails 4中分配虚拟属性的方式之间的区别。其中一种导致“堆栈层次太深”,其中一个工作正常。我试图通过解析一个文本字段并用逗号分割来创建一个标签字段来使用新的ActiveRecord数组字段。工作代码如下:在Rails中分配虚拟属性
class Post < ActiveRecord::Base
def tags=(s)
self[:tags] = s.split(/,\s+/)
end
end
但是,当我改变这个由分配给类变量标签字段分配在这种模式下,它会导致“堆栈级别太深”。
class Post < ActiveRecord::Base
def tags=(s)
self.tags = s.split(/,\s+/)
end
end
有人可以解释为什么发生在我身上吗?似乎使用self.tags
会导致此虚拟属性运行,直到堆栈爆炸。 ActiveRecord的哪一部分导致了这一点?