在Rails中保存相关实体

时间:2011-01-13 15:24:59

标签: ruby-on-rails

我无法修改RoR中的现有关系。 Db架构是用户(id),书籍(id,标题),评级(user_id,book_id,评级) 型号

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 =&gt; 1,:rating =&gt; 5); book.save工作正常,但我不能用

修改现有的评级
r = book.ratings.where(:user_id => 1).first
r.rating = 5

book.save不保存相应的评级,r.save引发有关列rating.id的错误。有没有办法在不修改数据库模式的情况下使事情有效?

1 个答案:

答案 0 :(得分:0)

您收到错误的原因是您的评级表包含数据但没有和id列。

在您的评分表中添加并标识列,并保存更改通话rating.save。

相关问题