1

何らかの理由で、私のモデルには、hasnを使用してリンクした関連モデルが含まれていません。

私の定義は次のとおりです。

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に外部キーを持つユーザーテーブルとコメントテーブルがあります。

これについて何かアドバイスはありますか?

4

2 に答える 2

0

OK、次のようにコメント宣言に Time フィールドを追加したことがわかりました。

class Comment
    include DataMapper::Resource

    belongs_to :post

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

Time型を持たず、DateTimeとして保存するMySQLも使用しています。Post.comments DataMapper を使用してコメントを取得しようとすると、Time として解析しようとして停止します。

これが誰かの頭痛の種を救うことを願っています。

于 2011-12-15T08:53:28.353 に答える
0

どのバージョンのデータマッパーを使用していますか?

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

このように、親キーと子キーの関係を明示的に配置してみてください

belongs_to :post, :parent_key => [:id], :child_key => [:post_id]
property   :post_id, Integer
于 2011-12-14T13:08:19.377 に答える