だから私はSTIとして画像やファイルに継承される資産モデルを持っています。製品には、有益なものとして多くの画像があります。このポリモーフィックな関連付けは正常に機能していますが、すべてのアセットにuser_idを追加する方法がわかりません。アセットは、そのイメージまたはファイルに関係なく、常にユーザーに属します。以下の私のコードを見てください。コントローラのcreateメソッド内で何かする必要があることは確かですが、何がわからないのでしょうか。:user_idをマージしようとしましたが、コンソールログを見るとnilが返されます。理想的には、@ user.imagesも実行したいのですが、これは、ユーザーがアップロードしたすべての画像、または@user.filesを表示します。
class User < ActiveRecord::Base
has_many :products
has_many :assets
end
class Asset < ActiveRecord::Base
belongs_to :assetable, :polymorphic => true
belongs_to :user
end
class Image < Asset
mount_uploader :filename, ImageUploader
attr_accessible :filename, :assets
end
class Product < ActiveRecord::Base
belongs_to :user
has_many :images, as: :assetable
accepts_nested_attributes_for :images
attr_accessible :name, :price, :images_attributes
validates_presence_of :name
end
class ProductsController < ApplicationController
def create
@product = Product.new(params[:product])
@product.user_id = current_user.id
params[:product][:images_attributes].each do |key, image|
# image.user_id = current_user.id
image.merge(:user_id => 1)
end
@product.save
end
end