我有一个表单,用户可以使用ajax上传资产。这将创建许多Asset对象,然后我想在创建Post对象时将它们与Post对象关联起来。我有一个名为asset_ids的form_field,我用创建的资产id更新它们。当我创建Post对象并使用assign_attributes填充其数据时,无论有多少id,都只创建一个关联。
资产模型:class Asset < ActiveRecord::Base
attr_accessible :caption, :image
belongs_to :post
has_attached_file :image, :styles => { :large => "600x600>", :medium => "300x300>", :thumb => "100x100>" }
end
Post模型:
class Post < ActiveRecord::Base
attr_accessible :content, :post_date, :status, :title, :tag_list, :asset_ids, :as => :admin
has_many :assets, :dependent => :destroy
has_and_belongs_to_many :tags
validates :content, :post_date, :title, :presence => true
end
发布数据散列的示例:
{"title"=>"Test post", "status"=>"true", "post_date"=>"01/02/2013", "content"=>" Some content", "tag_list"=>"", "asset_ids"=>"97,102"}
上面的例子只分配一个资产(id 97)给新的Post,当我像这样分配_attributes时:
@post = Post.new
@post.assign_attributes params[:post], :as => :admin
我必须确保我将id分配为一个数组:
@post.asset_ids = params[:post][:asset_ids].split(",")