1

私はレールに不慣れで、フォローアップを設定する方法がわかりませんでした。

ユーザー、招待状、写真のモデルがあります。各ユーザーは、他のユーザーを招待して特定の写真を表示します。ユーザーは他のユーザーに招待状を送信します。招待状は特定の画像にリンクされている場合と、まったくリンクされていない場合があります。

私の問題は、招待状と写真の間にオプションの関係を関連付ける方法がわからなかったことです。

私は持っています:

class Invitation < ActiveRecord::Base
  has_one :picture
end

class Picture < ActiveRecord::Base
  belongs_to :invitation
end

ただし、invitation.pictureを試してみると、次のエラーが発生します。

Failure/Error: @user.getsInvited invitation
     ActiveRecord::StatementInvalid:
       SQLite3::SQLException: no such column: picture.invitation_id: SELECT  "picture".* FROM "picture"  WHERE "picture"."invitation_id" = 1 LIMIT 1

おそらく私は写真モデルに列の招待状を追加する必要がありますが、これは必要です-写真の送信は招待状でオプションである可能性があります。また、画像に1つのinvitation_id列がある場合、同じ画像がさまざまな招待状で共有されるとどうなりますか?

つまり、各招待状には1つの画像が関連付けられている場合があり、他の招待状には同じ画像が関連付けられている場合があります。写真に招待状を「認識」させたくありませんでしたが、多対多の関係を作成する必要があるのではないでしょうか。

ありがとう!

4

1 に答える 1

3

招待状は、それが何に添付されているかを知っている必要があります。

class Invitation < ActiveRecord::Base
  belongs_to :picture # means invitation model has a picture_id column
end

class Picture < ActiveRecord::Base
  has_many :invitations
end
于 2012-04-25T19:29:14.987 に答える