기본적으로 중첩 된 3 가지 모델이 있습니다.모델 간의 관계가 예상대로 작동하지 않습니다.
class User < ActiveRecord::Base
attr_accessible :birthday, :name
has_one :advancement, :dependent => :destroy
accepts_nested_attributes_for :advancement
attr_accessible :advancement_attributes
end
class Advancement < ActiveRecord::Base
attr_accessible :user_id, :rank_name
belongs_to :user
has_one :rank, :dependent => :destroy
accepts_nested_attributes_for :_rank
attr_accessible :rank_attributes
end
class Rank < ActiveRecord::Base
attr_accessible :advancement_id, :one_li, :one_pi, :one_date, ...
belongs_to :advancement
end
다음은 모델을 만드는 데 사용하는 컨트롤러 코드입니다.
class UsersController < ApplicationController
def new
@user = User.new
@user.advancement = Advancement.new
@user.advancement.rank = Rank.new
respond_to do |format|
format.html # new.html.erb
end
end
def create
@user = User.new(params[:user])
@user.advancement = Advancement.new
@user.advancement.rank = Rank.new
respond_to do |format|
if @user.save
format.html { redirect_to @user, notice: 'User was successfully created.' }
else
format.html { render action: "new" }
end
end
end
end
콘솔에서 예상대로 작동하는 관계를 만들 수 있습니다. 브라우저를 통해이 작업을 수행하려고하면 모든 객체가 인스턴스화되지만 외래 키는 정확하지만 user.advancement를 찾으려고하면 오류가 누락됩니다. 내가 새로운 것을 사용하고 있거나 잘못 만드 는가? 그렇다면 무엇을해야 하는가? 코드의 양에 대해 유감 스럽지만, 다른 방법으로는 설명하지 못했습니다.
을 당신이 잘못된 이름을 전달하여'accepts_nested_attributes_for : – Thanh