0

我在 ruby​​ on rails 中遇到问题。当用户访问/homepage/时,我想让当前用户的商店id为0,当用户访问/homepage/:id/时,我想让用户的商店id成为url中的输入id。

我的代码:

routes.rb:
  match "/homepage" => "users#access", :as => "store"
  match "/homepage/:id" => "users#homepage", :as => "store"

def access
  @user = current_user
  @user.update_attributes(:store => "0")
  @user.save
end

def homepagestore
  @user = current_user
  @user.update_attribute(:id, user.store = :id)
  @user.save
end
4

1 回答 1

2

update_attribute更新数据库中的记录。但它跳过了验证检查。update_attributes还更新(保存)数据库中的记录。它不会跳过验证。

所以:

  1. 你应该params[:id]像塞尔吉奥所说的那样使用
  2. 您可能想update_attributes改用它,因为它不会跳过验证检查
  3. 如果您save使用update_attributeupdate_attributes

我的建议:

def access
  @user = current_user
  @user.update_attributes(:store => "0")
end

def homepagestore
  @user = current_user
  @user.update_attributes(:store => params[:id])
end

添加了 update_attributes 使用批量分配保护系统。因此,您需要 User 模型的 attr_accessible 调用中的 :store 字段以允许对其进行更改。或覆盖保护,请参阅 update_attributes 文档。询问您是否有更多问题。

于 2012-06-11T17:53:19.523 回答