2011-11-23 27 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

相关问题