2017-08-15 15 views
0

こんにちはRailsコミュニティ!2種類モデルシェア1ユニークフォトモデル

私は別のモデルをどのように構成するのか分かりません。 論文のモデルが複数の写真を持つことができます車と家:

私は2つの貴様のモデルを持っています。

  • は車や家のための1つの写真のモデルを使用することが可能ですか私は私がどのように生成することができ、1つのcars_photosモデルと1 house_photosモデル
  • それが可能だ場合を作成する必要があります。

    私の質問があります私の写真のモデルですか?

=>オプション1

 
rails g model Photo name:string, description:text car:references house:references 

Car.rb

has_many :photos 

House.rb

has_many :photos 

Photo.rb

belongs_to :car 
belongs_to :house 

は、このオプションの問題は写真が車で家にリンクされなければならないということです。魔女は良くない。 =>私は

Thxを...写真は私が続行する方法がわからない車でOR家

にリンクされたいです!

+0

PhotoCarを割り当てることができ、この

class Photo < ApplicationRecord belongs_to :imageable, polymorphic: true end class Car < ApplicationRecord has_many :photos, as: :imageable end class House < ApplicationRecord has_many :photos, as: :imageable end 

のようになります[ガイド](HTTPを参照してください。/ /guides.rubyonrails.org/association_basics.html#the-has-many-through-association)をhas_many:through Associationに追加してください。 – jvillian

+0

多型関連を使用できます。公式のRailsのガイドでは、イメージの関係を例として使っています。これはあなたの要求に完全に合っています:http://guides.rubyonrails.org/association_basics.html#polymorphic-associations – MrYoshiji

答えて

1

これはRails guides

$ rails g model Photo name:string description:text imageable:references{polymorphic}:index 

からの正確なプロトタイプpolymorphic関連は、この移行ファイル

class CreatePhotos < ActiveRecord::Migration[5.1] 
    def change 
    create_table :photos do |t| 
     t.string :name 
     t.text :description 
     t.references :imageable, polymorphic: true 

     t.timestamps 
    end 
    end 
end 

t.references :imageable, polymorphic: trueがあなたのphotosテーブルの上に2つの列を与えるために起こっている生み出しほとんどです:になりますimageable_id:integer関連付けられたオブジェクトのid列、および関連付けられたオブジェクトの文字列化されたクラス名になるimageable_type:string回避する。これにより、photosは、1つの関連付けで任意のモデルとインターフェースし、そのモデルに属します。

次に、あなたのモデルは、あなたがCar.find(params[:car_id]).photos.createCarPhotoを追加し、Photo.new imageable: Car.find(params[:car_id])

+0

こんにちはm.simon borg あなたの答えはThxです 私はあなたをテストします明日の解決策:) –

+0

こんにちはm.simon borg。完璧に動作しています!パリ、フランスの多くのThx ;-) –

0

はい、車と家の両方の写真を再利用できます。

写真のアップロードには、paperclipcarrierwaveの2つの大きな宝石があります。

モデリングを続ける前にそれらを見てください!