1
我无法修改RoR中的现有关系。 DB模式是用户(ID),图书(ID,标题),评级(USER_ID,book_id,评级) 模型是在Rails中保存相关实体
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错误。有没有办法让事情没有修改数据库架构的工作?
我认为,在'books_controller'内,在更新操作中,您必须遍历每个'Rating':'@book.ratings.each do {| r |例如,r.attributes = params [:rating] [r.id.to_s]}。你想从控制台或方法中做到这一点? – Zkoh 2011-01-13 15:35:29
`book.ratings.where(:user_id => 1).to_sql`和`r.inspect`的输出(在控制台中)是什么? – 2011-01-13 15:42:31