【发布时间】:2013-07-15 12:57:12
【问题描述】:
我试图了解这两种在 Rails 4 中分配虚拟属性的方法之间的区别。其中一种会导致“堆栈级别太深”,而其中一种可以正常工作。我试图通过解析文本字段并用逗号分割它来创建一个标签字段来使用新的 ActiveRecord 数组字段。工作代码如下:
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 的哪一部分导致了这种情况?
【问题讨论】:
标签: ruby-on-rails-4 virtual-attribute