【问题标题】:rails why model new().save doesn't work in create actionrails 为什么模型 new().save 在创建操作中不起作用
【发布时间】:2017-10-18 04:25:01
【问题描述】:

在 Model-1 脚手架创建动作中,

 def create
  @auclub = Auclub.new(auclub_params)
  user = User.find(current_user.id)
  respond_to do |format|
    if @auclub.save && user.update(auclub_id: @auclub.id)
      format.html { redirect_to @auclub, notice: 'Auclub was successfully created.' }
      format.json { render :show, status: :created, location: @auclub }
    else
       //some codes
    end
  end
end

我想和用户一起创建俱乐部

此代码有效,但如果我这样使用

user = User.find(current_user.id)
user.new(auclub_id : @auclub.id)
user.save

它不起作用! update 和 new.save 有什么区别吗?

【问题讨论】:

    标签: ruby-on-rails model scaffold


    【解决方案1】:

    试试:

      @auclub = Auclub.new(auclub_params)
      @user = User.find(current_user.id)
      @auclub.save
      @user.auclub_id = @auclub.id
      @user.save
    

    了解更多APi dock

    【讨论】:

      【解决方案2】:

      你做事的方式不对。

      没有模型和其他代码,我可以建议这样做:

      user = User.find(current_user.id)
      user.auclub_id = @auclub.id
      user.save
      

      而且我认为在您的情况下,对于像 user 这样的 ActiveRecord 实例没有可用的 new 方法。

      new 用于 ActiveRecord 类以创建一个新实例,例如:

      user = User.new
      

      而且我认为使用update 方法与手动重新分配属性并使用save 方法保存对象之间没有太大区别,但您必须关注模型上定义的性能、DRY 原则和回调.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-02-28
        • 1970-01-01
        • 2011-05-17
        • 1970-01-01
        • 1970-01-01
        • 2020-04-16
        • 1970-01-01
        相关资源
        最近更新 更多