我想拥有一个用户可以在其中创建邻域的视图。但是,我希望这些邻域在保存到邻域表之前先得到管理员的批准。
我想要一个temp_neighborhood表,在该表中将保存记录,直到管理员批准它们为止,然后将数据移至近邻表。该临时表将具有与常规表相同的属性。
所以这是我可视化的流程:
邻居控制器:
class NeighborhoodsController < ApplicationController
before_action :set_neighborhood, only: [:show, :edit, :update, :destroy]
#index, show, edit, update, and delete methods removed for brevity
def new
@neighborhood = Neighborhood.new
end
def create
@neighborhood = Neighborhood.new(neighborhood_params)
respond_to do |format|
if @neighborhood.save
format.html { redirect_to @neighborhood, notice: 'Neighborhood was successfully created.' }
format.json { render :show, status: :created, location: @neighborhood }
else
format.html { render :new }
format.json { render json: @neighborhood.errors, status: :unprocessable_entity }
end
end
end
private
def set_neighborhood
@neighborhood = Neighborhood.find_by_slug(params[:id])
end
def neighborhood_params
params.require(:neighborhood).permit(:name, :address)
end
end
邻居模型:
class Neighborhood < ActiveRecord::Base
geocoded_by :address
after_validation :geocode
has_many :users
validates :name, presence: true, uniqueness: true
validates :address, presence: true
after_validation :create_slug
def to_param
slug
end
private
def create_slug
self.slug = name.parameterize
end
end
上面的代码只是将用户创建的邻域保存在永久表中。为了将数据保存在临时表中,我制作了该表和一个名为TempNeighborhood的控制器。TempNeighborhood控制器只有一个新的create方法,看起来就像邻居控制器一样。
回到邻域控制器中,在create方法中,我更改了以下行:
@neighborhood = Neighborhood.new(neighborhood_params)
对此:
@neighborhood = TempNeighborhood.new(neighborhood_params)
但是,这给了我以下错误:
uninitialized constant NeighborhoodsController::TempNeighborhood
将数据从一个控制器保存到另一个表的最佳方法是什么?
您确定已将TempNeighborhood Controller设置为复数形式吗?TempNeighborhood控制器和模型是单数形式的“ TempNeighborhood”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句