2012-01-28 6 views
0

私は「facebook like」のような関係を実装しようとしています。 user_idを持つサブタスクに「has_many」を指定して間違ったsql要求が行われました

のお気に入り::整数属性 |> PostsLike post_idのと同じように継承します。 私はそのための継承を使用したかったので、ここに私の構造だ整数属性

だからここに私のLike.rbモデルです。

class Like < ActiveRecord::Base 
    belongs_to :user 
end 

そして、私のPostLike.rbモデル:

​​3210

そして最後に、私はポストモデルを持っています複数postlikesオブジェクトを持っています:

class Post < ActiveRecord::Base 

    has_many :postlikes 

end 

しかし、ここでは私の問題だ、私はIRCとそのに行くとき:

ルビー-1.9.2-P290:

  1. 私はPostオブジェクトを取得します:001> @p = Post.all.first

    私は、このオブジェクトのpostlikesを取得しよう
  2. は、ここではSQL文です:

    SELECT likes。* FROM likes WHERE likestype IN( 'ポストライティング')AND likes = 310 post_id

だから、基本的に代わり

postlikes.post_id

Railsのそれを修正する

likes.post_id

をやって任意のアイデアをしているの?

答えて

1

ActiveRecordはLikeおよびPostlikeオブジェクトを "likes"という名前の同じテーブルに格納し、 "type"という名前の列を使用してオブジェクトのクラスを保存します。 ActiveRecordの:: StatementInvalid:

WHERE likes.type IN ('Postlike') AND likes.post_id = 310 

私はこのエラーを取得しない理由postlikes

は右のでhttp://api.rubyonrails.org/classes/ActiveRecord/Base.html

+0

で "単一テーブル継承" の章を参照してください何の表がありません:それは声明を説明Mysql2を::エラー: 'where句'の 'likes.post_id'列が不明です:SELECT 'likes'。* FROM' likes' WHERE 'likes'.'type' IN( 'Postlike')AND' l ikes'.post_id' = 310 –

+0

マイグレーションを作成して、テーブル "likes"に "post_id"というカラムを追加し、その後に 'rake db:migrate'を実行しましたか? – Baldrick

+0

ええ、問題は、私は 'rail g model postslike ...'を使ってポストライクモデルを生成し、それを類似モデルから継承させたので、列をマイグレーションするのを忘れてしまったということでした。 ありがとう、愚かな問題と質問:)ありがとう –