2011-12-14 2 views
0

어떤 이유로 든 내 모델에 사용 된 링크 된 모델이 없습니다. 다음과 같이Sinatra의 Ruby에서 DataMapper를 사용하여 연관을 검색하지 않습니다.

나의 정의는 다음과 같습니다

class Post 
    include DataMapper::Resource 

    has n, :comments 

    property :id, Serial 
    property :name, String 
end 

class Comment 
    include DataMapper::Resource 

    belongs_to :post 

    property :id, Serial 
    property :comment, Text 
end 

그런 의견은 사용자의 속성으로 표시되지 않기 때문에이 오류가 발생합니다 어떤 이유로 다음과 같은 경로/코드를 사용하여.

class MyApp < Sinatra::Application 
    get "/" do 

    @post = Post.get(1)  
    @post.comments.inspect 
    end 
end 

는 DataMapper 생성 테이블은 (DataMapper.finalize & DataMapper.auto_upgrade를 사용하여!) 잘 보인다. posts.id에 외래 키가있는 사용자 테이블과 주석 테이블을 가지고 있습니다.

이것에 대한 조언이 있으십니까?

답변

0

같은 부모 키 아이 키 관계를 넣어, 내가 주석 선언에 시간 필드를 추가과 같이 밝혀 또한 Time 형식이없는 MySQL을 사용하여 DateTime으로 저장합니다. Post.comments를 사용하여 주석을 검색하려고 할 때 DataMapper는이를 Time으로 파싱하여 죽습니다.

누군가가 두통을 덜어주기를 바랍니다.

0

어떤 datamapper 버전을 사용하고 있습니까?

댓글을 작성하여 저장하고 post_id에 어떤 값이 저장되어 있는지 확인할 수 있습니다.

class Comment 
    include DataMapper::Resource 

    belongs_to :post 

    property :id, Serial 
    property :time, Time 
    property :comment, Text 
end 

:

시도가 명시 적으로 확인이

belongs_to :post, :parent_key => [:id], :child_key => [:post_id] 
property :post_id, Integer 
+0

1.2. 코멘트를 작성할 때 post_id가 필요하므로 주석을 작성할 때 입력해야합니다. 또한 내 의견 모델을 제안 할 때 변경하면 작동하지 않습니다. – tomvo

+0

속성 시간을 명시 적으로 DateTime으로 만들고 어떤 일이 발생하는지 확인하십시오. – ksinkar

관련 문제