2011-11-23 26 views
2

以下兩個代碼用於更新數據庫。update_all有效,但update_attributes不是

第一個版本,它採用了「update_attributes方法」屬性不工作

@existing_exp = Emiexperiment.find(:first, :conditions => [ "EMI_COM_ID = ? and EMI_SUB_FK = ?", "EMI_999", "7789"]) 

@existing_exp.update_attributes(
          :EMI_STATUS => "present", 
          :EMI_ADD_STATUS => "weak" 
         ) 

但是,下面的代碼,它使用了「update_All」屬性似乎工作的偉大。

Emiexperiment.update_all "EMI_STATUS = 'present', EMI_ADD_STATUS = 'moderate'", ["EMI_COM_ID = ? and EMI_SUB_FK = ?", "EMI_999", "7789"] 

下面是Emiexpression類代碼:

class Emiexperiment < ActiveRecord::Base 
set_table_name "EMI_EXPERIMENT" 
set_primary_key "EMI_OID" 
attr_accessible :EMI_STATUS, :EMI_ADD_STATUS, :EMI_COM_ID, :EMI_SUB_FK 


belongs_to :sub, :foreign_key => "EMI_SUB_FK" 


end 

我很困惑,爲什麼會這樣。

我沒有在我的'Emiexperiment'模型中使用任何驗證。

對此的任何提示都非常感謝。很多很多謝謝你的幫助:)

+0

你能指定Rails版本嗎? – lucapette

+0

請展開「不工作」,你是否收到錯誤?還請顯示創建@existing_EMI的代碼 –

+0

對不起,應該是'@existing_exp' – tanya

回答

1

你可能想要attr_accessor這些字段。 attr_accessor是一種使得getter和setter成爲可能的ruby方法。
attr_accessible是一種Rails方法,允許您將值傳遞給質量分配:例如, update_attributes(attrs)

+0

進一步說明,如果在attr_accessor中未調用的任何屬性都將被忽略'update_attributes'方法 – jaydel

+0

感謝您的建議,我會嘗試 – tanya

相關問題