атрибут id не обновляется в sqlite - PullRequest
1 голос
/ 19 августа 2011

Я пытаюсь обновить строку таблицы sqlite (id, столбцы данных) из консоли rails. Все атрибуты моделей обновляются, но при обновлении атрибута 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, но при проверке id базы данных sqlite не обновляется до 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 Ответ

4 голосов
/ 19 августа 2011

Rails не позволит вам легко обновить атрибут id. Вы можете выполнить следующий SQL-код, и он должен работать. (Кроме того, когда вы используете метод update_attributes(...), вам не нужно вызывать .save впоследствии).

sql = "update people set id=5 where id=4"
ActiveRecord::Base.connection.execute(sql)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...