id属性未在sqlite中更新

时间:2011-08-19 14:33:41

标签: ruby-on-rails

我试图从rails控制台更新sqlite表行(id,data columns)。所有模型属性都在更新,但在更新模型的id属性时,没有任何反应。

irb(main):023:0> r = Person.find(4)
=> #<Person id: 4, data: "threeplusone">
irb(main):024:0> r.update_attributes({:id=>5})
=> true
irb(main):025:0> r.save
=> true

以上打印为true但是当我检查sqlite时,db id未更新为5。

irb(main):026:0> r = Person.find(4)
=> #<Person id: 4, data: "threeplusone">
irb(main):027:0> r.update_attributes({:data=>'TRIplusone'})
=> true
irb(main):028:0> r.save
=> true

上面打印为true,数据属性正在更新。

我的模特

class Person < ActiveRecord::Base 
 attr_accessor :id,:data
 attr_accessible :id,:data
end

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

Rails不允许您轻松更新id属性。您可以执行以下SQL,它应该可以工作。 (另外,当您使用update_attributes(...)方法时,之后无需再调用.save

sql = "update people set id=5 where id=4"
ActiveRecord::Base.connection.execute(sql)