ruby on rails改变变量

时间:2012-06-11 17:45:37

标签: ruby-on-rails ruby

我在轨道上的红宝石有问题。当用户访问/ homepage /时,我想将当前用户的商店ID设为0,并且当用户访问/ homepage /时,我想让用户的商店ID成为url中的输入id: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

1 个答案:

答案 0 :(得分:2)

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

所以:

  1. 您应该使用params[:id]作为Sergio说
  2. 您可能希望使用update_attributes,因为它不会跳过验证检查
  3. 如果您使用saveupdate_attribute
  4. ,则不需要update_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文档。询问您是否有更多问题。