Сохранение связанных сущностей в Rails - PullRequest
1 голос
/ 13 января 2011

Я не могу изменить существующие отношения в RoR. Db схема - это пользователи (id), книги (id, title), рейтинги (user_id, book_id, rating) Модели

class User < ActiveRecord::Base
  has_many :ratings
end

class Rating < ActiveRecord::Base
  belongs_to :user
  belongs_to :book
end

class Book < ActiveRecord::Base
  has_many :ratings
end

Создание нового рейтинга с помощью book.ratings.build (: user_id => 1,: rating => 5); book.save работает нормально, но я не могу изменить существующий рейтинг с помощью

r = book.ratings.where(:user_id => 1).first
r.rating = 5

book.save не сохраняет соответствующую оценку, а r.save вызывает ошибку в столбце rating.id. Есть ли способ заставить вещи работать без изменения схемы БД?

1 Ответ

0 голосов
/ 13 января 2011

Причина, по которой вы получаете ошибку, состоит в том, что в вашей таблице рейтингов есть данные, но нет столбца с идентификатором.

Добавьте и добавьте столбец id в таблицу рейтингов и сохраните внесенные изменения, называя rating.save.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...