我正在尝试创建一个创建已检查对象副本的操作。
到目前为止我的行动:
def create_multiple
@webhost = Webhost.find(params[:webhost_ids])
@webhost.each do |webhost|
Webhost.new(:webhost)
end
respond_to do |format|
format.html { redirect_to(:admin_webhosts, :notice => 'Konkurrancerne er nu slettet') }
format.xml { head :ok }
end
end
操作呈现但未创建新的Web主机副本。
答案 0 :(得分:1)
'new'方法仅实例化一个新对象。它不会将对象持久保存到您的数据库(或其他)。您要么必须在该对象上调用save,要么可以执行
def create_multiple
@webhost = Webhost.find(params[:webhost_ids])
@webhost.each do |webhost|
Webhost.create(webhost.attributes)
end
respond_to do |format|
format.html { redirect_to(:admin_webhosts, :notice => 'Konkurrancerne er nu slettet') }
format.xml { head :ok }
end
end
调用create将实例化一个新对象并保存(只要它通过任何验证)。
答案 1 :(得分:1)
尝试是否有效(请注意create
而不是new
,因为new
本身不会保存它):
def create_multiple
@webhost = Webhost.find(params[:webhost_ids])
@webhost.each do |webhost|
Webhost.create(webhost.attributes)
end
respond_to do |format|
format.html { redirect_to(:admin_webhosts, :notice => 'Konkurrancerne er nu slettet') }
format.xml { head :ok }
end
end