(뉴비 레일은 여기) 우 슈아 리오와 피챠의 2 가지 모델이 있습니다. Usuario는 Ficha와 has_one 연관이 있습니다.왜 내 연결된 개체가 저장되지 않습니까?
다음class UsuariosController < ApplicationController
before_action :authenticate_user!
def index
@usuarios = Usuario.all
@usuario_last = Usuario.last(10)
@usuario_rev = @usuario_last.reverse
@user_count = current_user.usuarios
#Search
@usuario_search = if params[:term]
Usuario.where("name ~* ?", params[:term])
else
Usuario.all
end
@usuario_pag = @usuario_search.paginate(:page => params[:page], :per_page => 10)
end
def show
@usuario = Usuario.find(params[:id])
end
def new
@usuario = current_user.usuarios.build
end
def create
@usuario = current_user.usuarios.build(usuario_params)
@usuario.save
redirect_to @usuario
end
def edit
@usuario = Usuario.find(params[:id])
end
def update
@usuario = Usuario.find(params[:id])
if @usuario.update(usuario_params)
redirect_to @usuario
else
render 'edit'
end
end
def destroy
@usuario = Usuario.find(params[:id])
@usuario.destroy
redirect_to usuarios_path
end
private
def usuario_params
params.require(:usuario).permit(:name, :age, :doc, :docnum, :estadocivil, :country, :street,
:direction, :municipal, :zipcode, :tel1, :tel2)
end
end
내 Ficha 컨트롤러입니다 :
여기class Ficha < ApplicationRecord
belongs_to :user
belongs_to :usuario
end
class Usuario < ApplicationRecord
belongs_to :user
has_one :ficha, :dependent => :destroy
end
는 사용자 선호도 컨트롤러입니다 : 여기
내 모델입니다class FichasController < ApplicationController
before_action :authenticate_user!
def index
end
def show
@ficha = Ficha.find(params[:id])
end
def new
@usuario = Usuario.find(params[:usuario_id])
if @usuario.ficha.nil?
@ficha = @usuario.build_ficha
else
flash[:error] = "Ya tienes una ficha"
end
end
def create
@usuario = Usuario.find(params[:usuario_id])
@ficha = @usuario.build_ficha(ficha_params)
if @ficha.save
redirect_to @usuario, :notice => "Your ficha has been successfully created."
else
render :action => 'new'
end
end
def edit
#@ficha = Ficha.find(params[:id])
end
def update
@ficha = Ficha.find(params[:id])
if @ficha.update(ficha_params)
redirect_to @ficha
else
render 'edit'
end
end
def destroy
@usuario = Usuario.find(params[:usuario])
@ficha = @usuario.fichas.find(params[:id])
@ficha.destroy
redirect_to fichas_path
end
private
def ficha_params
params.require(:ficha).permit(:name, :age, :doc, :docnum, :estadocivil, :country, :street,
:direction, :municipal, :zipcode, :tel1, :tel2, :time, :redes, :estudios, :profession,
:laboral, :discapacity, :percent, :derivado1, :derivado2, :derivacion, :nombredelprofesional,
:observaciones, :conocio, :signature, :date, :term)
end
end
있습니까 나는 창조 잘못 어딘가에 가고 컨트롤러에있는 ficha? usuario 모델에서 after_create를 사용하여 개체를 생성하는 것이 더 좋을까요?
도움을 주시면 감사하겠습니다. 감사!
처럼 UsuariosController에서 이러한
또한 당신이 허가 ficha_attributs을 시도하는 http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html
에 대해 읽기,의 본질적인 부분을 포함하는 것이 좋습니다 여기에 대한 대답과 참조 용 링크를 제공하십시오. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않게 될 수 있습니다. - [리뷰에서] (리뷰/저품절 게시물/18115302) – Alisson