我试图从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
感谢您的帮助。
答案 0 :(得分:4)
Rails不允许您轻松更新id
属性。您可以执行以下SQL,它应该可以工作。 (另外,当您使用update_attributes(...)
方法时,之后无需再调用.save
。
sql = "update people set id=5 where id=4"
ActiveRecord::Base.connection.execute(sql)