私はレールが初めてで、以下のように設定する方法がわかりませんでした。Rails:2つのモデル間のオプションの1対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
たぶん私は絵のモデルに列の招待を追加する必要がある、しかし、これは必要ですか?写真を送ることは招待状ではオプションかもしれません。また、画像内にinvitation_idという列が1つしかない場合、同じ画像がさまざまな招待状の間で共有されているとどうなりますか?
I.e.各招待状には1つの写真が関連付けられていてもよく、他の招待状には同じ写真が関連付けられてもよい。私は絵が招待状を「認識」して欲しいとは思っていませんでしたが、多対多の関係を作り出すことが必要なのでしょうか?
ありがとうございます!
この方法で招待状は、オプションの絵を持っている(ちょうど 'picture_id'フィールドを設定しない;)) –
うわー、Iそれが見えなかった!ありがとう! :) – Karan