所以我有一個資產模型,它被圖像和文件作爲STI繼承。產品有很多圖像可以設置。這種多態關聯工作正常,但我無法弄清楚如何將user_id添加到每個資產。資產始終屬於用戶,無論它是圖像還是文件。請看下面的代碼。我很確定我需要在控制器創建方法中做些什麼,但我不確定是什麼?我試過合併:user_id,但這只是在查看控制檯日誌時返回nil。理想的情況是什麼,我也希望做的是@ user.images這將顯示用戶上傳,甚至@ user.filesSTI&Polymorphic association&user_id
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
代碼的問題是什麼?你有錯誤或異常?不是'image.user_id = current_user.id'工作嗎? – KULKING
我沒有收到任何錯誤。保存時,一切正常,但user_id下的資產表顯示爲'null',控制檯日誌顯示資產的MySQL插入爲'user_id = nil'。不,'image.user_id = current_user.id'不能工作,因爲它顯示爲零。 – Peter
'image.merge!(:user_id => 1)'如果你願意,並且在包裝參數之前放置它。 :)但請看下一個答案 –