我已經在我的用戶控制器,爲用戶創造的圖片下面的代碼外鍵:.build不能分配尚不存在
def new
@user = User.new
@pictures = @user.pictures.build({:placement => "front"},{:placement => "profile"})
end
然而,當我創建一個新用戶,它不是不會自動創建位置爲「front」或「profile」的圖片。事實上,圖片沒有任何更新。該照片模型
attr_accessible :placement
和picture.rb
belongs_to :user
和user.rb
has_many :pictures
accepts_nested_attributes_for :pictures, allow_destroy: true
爲什麼我的生成命令默默地失敗?
UPDATE
使用.save!我已經瞭解到,@pictures
被轉讓,但問題是沒有被與之相關聯的user_id。當我故意分配user_id時,如:
def new
@user = User.new
@pictures = @user.pictures.build({:placement => "front", :user_id => @user.id},{:placement => "profile", :user_id => @user.id})
end
它仍然不分配user_id。
奇怪的是,當我在rails控制檯中運行相同的命令時,確實將user_id指定爲。
在@pictures命令運行之前,新的@user似乎沒有分配給他的自動標識,但控制檯版本是成功的,因爲它按順序執行操作。
所以,這就是爲什麼我看到一個空白的ID。
這是怎麼發生的?這不是同時編號分配的東西模型應該照顧與belongs_to
和has_many
,和accepts_nested_attributes_for
?
如果將鏈接到一起的ID在保存後才創建,那麼解決分配嵌套屬性的適當方法是什麼?
爲什麼這不起作用?
將'@ user.id'更改爲'@ user'。同樣的問題。 – Mittenchops 2012-08-10 14:40:16
此外,這給了我一個'不能批量分配受保護的屬性:用戶錯誤。 – Mittenchops 2012-08-13 15:06:14