Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Ошибка при обновлении полей в двусвязной таблице


Автор: MefIsT0feL 27.2.2007, 17:28
Народ !!
Подскажите как пофиксить баг.
Ситуация такова :
Есть двусвязная таблица с полями user_id и role_id.
При попытке выполнить update_attributes вываливается
"Mysql::Error: #42S22Unknown column 'id' in 'where clause': UPDATE users_roles SET `user_id` = 1, `role_id` = 13 WHERE id = NULL"
Я вообще не понимаю откудого Rails трогает этот id ??  smile 
Ведь выборку из таблицы я делал по user_id :
Код

usr = UsersRole.find(:first, :conditions => ["user_id = ?","1"])

Помогите ПЛИИИИЗ !! Потому что у меня уже крыша ехать начинает !!!  smile 

Автор: skalex 27.2.2007, 17:38
Насколько я понимаю метод find() - должен в результате выполнять SELECT. А у вас ошибка в UPDATE-запросе ...

P.S.
Утойняйте пож. в теме топика, что вопрос касается ROR.

Автор: MefIsT0feL 27.2.2007, 17:43
Ну да ошибка в UPDATE, я имел в виду, что далее я делаю
Код

usr.update_attributes(поля которые нада проапдейтить)

Автор: skalex 27.2.2007, 18:09
MefIsT0feL, а какой primary_key у таблицы users?

Автор: MefIsT0feL 27.2.2007, 18:23
Никакого

Автор: PFOcChKen 27.2.2007, 19:18
1. А связаны ли у вас таблицы на уровне моделей? has_and_belongs_to_many?

2. В таблице users должен быть ключ с именем id, либо в модели User этот ключ надо переназвать. (Rails по умолчанию работают с id)

3. Напрямую с такой таблицей в рельсах лучше не работать. Лучше создать модельки User и Role с ключами id и законектить их друг на друга...

Автор: MefIsT0feL 28.2.2007, 13:30
Есть и модель User и модель Role и связа прописаны тоже.  Задача у меня состоит в иом, что у определённого юзера необходимо поменять значение роли. А она не меняется.

Автор: MefIsT0feL 28.2.2007, 13:51
Всё. Пофиксил !! smile 
Всем СПАСИБО за помощь !!!
Я просто сделал не update_attributes, а usr.role << (нуобходимая мне роль)  smile
Всем ещё раз СПАСИБО !!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)