레일스 4에서 가상 속성을 할당하는 두 가지 방법의 차이점을 이해하려고합니다. 그 중 하나는 "스택 레벨이 너무 큼"으로 나타나며 그 중 하나가 정상적으로 작동합니다. 나는 새로운 ActiveRecord 배열 필드를 사용하여 텍스트 필드를 파싱하고 태그 필드를 만들기 위해 쉼표로 분리하려고합니다. 다음과 같이 작업 코드는 다음과 같습니다 그러나레일에 가상 속성 할당
class Post < ActiveRecord::Base
def tags=(s)
self[:tags] = s.split(/,\s+/)
end
end
I 클래스 변수에 할당하여이 모델의 태그 필드를 지정하려면이 옵션을 변경할 때, 그것은 "너무 깊이 스택 레벨"는 발생합니다.
class Post < ActiveRecord::Base
def tags=(s)
self.tags = s.split(/,\s+/)
end
end
누군가 내게 이런 일이 일어나는 이유를 설명 할 수 있습니까? self.tags
을 사용하는 것 같아서 스택이 폭발하기 전까지이 가상 속성이 실행됩니다. ActiveRecord의 어느 부분에서이 문제가 발생합니까?