2011-12-14 9 views
0

何らかの理由で私のモデルにhasnを使用してリンクされた関連モデルが含まれていません。次のようにRuby in Sinatra 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を使用して!)細かいようです。これは、userテーブルと、posts.idに外部キーを持つコメントテーブルを持っています。

これに関するアドバイスはありますか?

答えて

0

オクラホマのような親キー子キーの関係を配置しようとすると、それは私がそうのように、コメント宣言に時間フィールドを追加判明:

class Comment 
    include DataMapper::Resource 

    belongs_to :post 

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

また、Time型を持たないMySQLを使用して、DateTimeとして保存します。 Post.commentsを使用してコメントを取得しようとすると、DataMapperはそれをTimeとして解析して終了します。

希望すると、誰かが頭痛を軽減できます。

0

どのバージョンのdatamapperを使用していますか?

コメントを作成して保存し、post_idに保存されている値を確認できますか?

は、明示的にこの

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

1.2。私はコメントを作成するときにpost_idが必要なので、コメントを作成するときにそれを記入する必要があります。また、あなたの提案にコメントモデルを変更しても、動作しません。 – tomvo

+0

明示的なDateTimeとしてプロパティの時刻を作成し、何が起こるか見る – ksinkar

関連する問題