ユーザーは写真をアップロードできます。この写真はクリップを使って保存されています。写真のアップロードと保存に使用するモデルをアップロードといいます。アップロードされた画像をモデルに関連付ける方法
# Table name: uploads
#
# id :integer not null, primary key
# created_at :datetime
# updated_at :datetime
# photo_file_name :string(255)
# photo_content_type :string(255)
# photo_file_size :integer
# photo_updated_at :datetime
#
アップロードした写真にリンクしたいモデルがあります。メッセージと呼ばれます。
Table name messages
# content :string(255)
# upload_id :string(255)
# created_at :datetime
# updated_at :datetime
私はメッセージモデルに画像をリンクするためにするupload_idを使用したいです。
しかしこれは
Message
belongs_to :upload
Upload
has_one :message
これは少し奇妙なように、次のように関連があることを意味します。説明にさらに追加するために、私はUserのような他のモデル用のファイルもアップロードします。だから私は本当にアップロードを使用する各モデルのテーブルにアップロードIDを格納したいと思います。
は、その後どのように私はメッセージmessage.upload_id.upload @
のインスタンスからのアップロードにアクセスすることができますか? @ user.upload_id.upload?事前
メッセージを保存してmessage_idを正しく保存するには、アップロードテーブルを更新する必要がありますか? – chell
他のモデルのアップロードを使用する必要があるため、私はこれを行うことができないことに気付きました。ユーザーモデルも同様に言ってください。理想的には、モデルのテーブルにアップロードのIDを格納することです。そのようにして、私はすべてのアップロードを1か所に保存し、モデルのidからそれらを取得できます。 – chell
それから、 'Upload belongs_to:uploadable、:polymorphic => true'と' Message has_one:upload、:: as uploadable'という多様な関連付けを使用してください。 – Hck