2011-11-01 53 views
2

在我的rails應用程序中,我使用的是舊數據庫。當在rails中保存數據時手動設置主鍵的值

class Expression < ActiveRecord::Base 
set_table_name "EXPRESSION" 
set_primary_key "EXP_ID" 

belongs_to :sub, :foreign_key => "EXP_SUB_FK" 

end 

要保存在「表達」表中的條目,我使用在我的控制器方法如下代碼:

@expression = Expression.create(
         :EXP_ID => 7, 
         :EXP_SUB_FK => 99991886, 
         :EXP_STRENGTH => 'strong', 
         :EXP_ADDITIONAL_STRENGTH => 'intense', 
         :EXP_COMPONENT_ID => 43444 
         ) 

我有每次我保存的條目(手動設定EXP_ID我將從另一個表中獲得ID),但上面的代碼不保存EXP_ID。所有其他值都保存,EXP_ID除外。

如果我在表達式模型中註釋掉set_primary_key「EXP_ID」,它可以工作,但我需要將EXP_ID定義爲主鍵。 在將條目保存到dbase時,是否有一種方法可以爲主鍵分配值?

如果有人能提供給我一些提示,我將不勝感激。

回答

3

EXP_ID設置爲Expression模型中定義的before_save過濾器。

UPDATE:

加樣品:

before_save :set_exp_id 
def set_exp_id 
    self.exp_id = 5555555 
end 
+0

我說 'before_save:EXP_ID' 在我的模型,但它似乎仍然沒有工作 – tanya

+0

顯示的'before_filter'方法的代碼您正在使用。 – Zabba

+1

謝謝Zabba,我終於明白我的錯誤,我錯過了'自我'。在該方法中 – tanya

相關問題