2012-07-30 20 views
0

我正在開發Ruby 1.8.7和Rails 2.3.8。 我正在嘗試在一個動作中創建相同的id另一個模型。不能創建相同的ID另一種模式

def create 
    id = params[:id] 
    item_master = ItemMaster.new(params[:item_master) 
    item_master.id = id 
    item_master.save 
    item_master_child = ItemMaster.new(params[:item_master_child]) 
    item_master_child.id = id 
    item_master_child.save 
    p item_master 
    # => ItemMaster id: 654, style: 6, icon: 7 
    p item_master_child 
    # => ItemMasterChild id: 654, sub_style: 4, roll: 5 
end 

看來,保存成功完成,但實際上item_master PARAMS變成ID:654,風格:0,圖標:0。除id之外的所有參數都變爲0. 任何想法?

+0

那麼,你應該檢查服務器日誌上的參數散列。也許這些參數並沒有像你期望的那樣通過。 – MurifoX 2012-07-30 12:12:42

+0

看看你的'''log/development.log''來查看數據庫級別發生了什麼! – phoet 2012-07-30 12:27:42

+0

請接受解決您的問題的答案(特別是您之前提出的問題)以保持我們的社區健康。有關詳細信息,請參閱http://meta.stackexchange.com/questions/16721/how-does-accept-rate-work/65088#65088。 – 2012-07-30 13:07:28

回答

0

由於它是受保護的屬性,所以probrem不能大規模分配ID屬性。 我已經解決了這個問題。

設置新的ItemMaster並設置唯一的id屬性並保存。 使用後續參數製作新的ItemMasterChild並設置id屬性並保存。 然後,通過post atttributes更新ItemMaster attibutes,這工作正常。

更新attibutes應保存item_master_child後。 如果把它放在後item_master.save,屬性被設置爲0 我不知道爲什麼....

def create 
    id = params[:id] 
    item_master = ItemMaster.new 
    item_master.id = id 
    item_master.save 
    item_master_child = ItemMaster.new(params[:item_master_child]) 
    item_master_child.id = id 
    item_master_child.save 
    item_master.update_attributes(params[:item_master]) 
end 

感謝您的支持和答覆。

0

你可以這樣做:

item_master_child.id = item_master.id 
+0

對不起,這不作任何更改。 – DIGITALSQUAD 2012-07-31 01:49:43

0

AFAIK Rails會不會讓你指定的東西數據庫對象的id字段。 如果您需要以某種方式連接它們,請添加具有'has_one'關係的外鍵或belongs_to

+0

我很瞭解。然而,我的顧客desined ID字段關係... – DIGITALSQUAD 2012-07-31 01:51:15

相關問題