0
我在用下面的代碼麻煩:Authlogic具有嵌套屬性和多態關聯
User < AR
acts_as_authentic
belongs_to :owner, :polymorphic => true
end
Worker < AR
has_one :user, :as => :owner
accepts_nested_attributes_for :user
end
Employer < AR
has_one :user, :as => :owner
accepts_nested_attributes_for :user
end
我想根據用戶類型來創建登記表,幷包括認證字段,諸如用戶名和密碼。我現在這樣做:
UserRegistrationController < AC
#i.e. a new Employer
def new
@employer = Employer.new
@employer.build_user
end
...
end
我再包括與fields_for
用戶領域。所有的視圖渲染良好,但這裏有一個問題:我不能建立一個用戶,它告訴我:password
是一個錯誤的方法,所以我猜測驗證邏輯已被繞過。 我該怎麼辦?我做錯了嗎?我應該放棄多態協會以支持單表繼承嗎?無論我做什麼,我都必須確保它與Authlogic很好地搭配。
嘿感謝!我會嘗試一下。我應該在創建操作中保存什麼?我應該分別保存嗎? 我寧願堅持has_one關聯,它似乎更具可擴展性。另外,我現在不太擔心空間。 – ferparra 2010-04-06 14:44:29
我認爲你需要分開保存兩者。 Rails將無法確定多態關係的另一端是哪種類型的模型。嘗試| @employer = Employer.new(params [:employer])| @ employer.save | @user = User.new(params [:user] .merge!(:owner => @employer))。您需要從模型中移除accepts_nested_attributes_for。 – mark 2010-04-06 14:59:10
嘿,你的原始表單定義中,你確定你沒有在所有者字段中定義用戶屬性?我會發布另一個答案,因爲也許這應該工作。 ^請參閱編輯原始答案。 – mark 2010-04-06 15:00:22