Ruby Rails对特定用户的update_all

时间:2014-02-10 20:51:03

标签: ruby-on-rails

我有两种模式:用户和书籍(用户拥有书籍,每本书都有价格)。我想更改特定用户的所有价格。

我试过了:

def update
    @book = Book.find(params[:id])
    user = User.find(params[:id])
    Book.update_all({:price => 0}, {:id => user.books})
end

(目前只更新特定用户的一本书)

网址如下:

localhost:3000/users/103/account 

我想我还需要从网址中获取用户ID吗?

2 个答案:

答案 0 :(得分:1)

请改为尝试:

Book.where(:id=> user.books).update_all(:price => 0)

update_all的{​​{3}}以及第二个“条件”参数已弃用。这是old version

答案 1 :(得分:1)

def update
  user = User.find(params[:id])
  user.books.update_all({:price => 0})
rescue ActiveRecord::RecordNotFound
  # what happens if user doesn't exist?
end