으로 할당 된 속성을 보지 못합니다. Ruby 및 DataMapper를 시작하면서 생각지 못한 문제가 발생했습니다. 나는 다음과 같은 얻을DataMapper는 @
다음> foo = Foo.new
> foo.date
=> #<Date: 2013-03-28 ((2456380j,0s,0n),+0s,2299161j)>
> foo.save
:
class Foo
include DataMapper::Resource
property :id, Serial
property :date, Date, required: true
def initialize
@date = Date.today
end
end
내 모델, 데이터베이스 연결을 설정을 테스트하고 새로운 foo는 저장하려고하는 IRB를 엽니의 나는 다음과 같은 모델을 가지고 있다고 가정 해 봅시다 예외 :
DataObjects::IntegrityError: foos.date may not be NULL
그리고 필자는 필요에 따라 날짜를 표시했기 때문에 완벽하게 이해할 수 있습니다. 그러나 날짜는 거기에있다! 나는 그것을 클래스의 생성자에 할당했다! 그리고 오늘 날짜로 초기화하지 않고 저장하려고하면 유효성 오류 만 발생합니다. 예외 없음.
이해가 안 무엇(이 무엇인지 당신이 대답 할 것은) 내가
self.date = Date.today
와
@date = Date.today
를 교체하면 작동한다는 것입니다! foo가 올바르게 저장되었습니다. 왜 그런가요? DataMapper 내부의 버그입니까?
이것은 DataMapper가 기본 변수가 아닌 setter/getters를 사용할 때만 조작되는 일종의 내부 세트/비 설정 데이터 구조를 유지한다는 것을 의미합니다. – Linuxios
@Linuxios : 논리적 인 방식으로 작동시키는 방법이 있습니까? 현재 작동하는 방식과 매우 직관적입니다. –
당신이 말한 것을 정확히하고'self.date'를 사용하십시오. 인스턴스 변수는 클래스의 가장 내부에있는 부분입니다.이 클래스를 사용하여 DataMapper의 내부 구조와 상호 작용할 경우 화재로 어지럽 힙니다. – Linuxios