我有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:_rank'應該是'accepts_nested_attributes_for:rank' – Thanh