创建用户无法识别的功能

时间:2015-01-27 09:13:55

标签: ruby-on-rails ruby

我的模型中有以下类:

 class User < ActiveRecord::Base
      # Include default devise modules. Others available are:
      # :confirmable, :lockable, :timeoutable and :omniauthable
      devise :database_authenticatable, :registerable,
        :recoverable, :rememberable, :trackable, :validatable, :confirmable
      has_one :list
   end

   class List < ActiveRecord::Base
      belongs_to :user
   end

现在我想在列表/显示页面上创建一个新列表按钮,我可以在其中为current_user创建一个新列表。

  def new
    @list = List.new
  end


  def create
    @list = current_user.list.build(params.require(:list).permit(:title))

      if @list.save
      redirect_to @list, notice: "List was saved successfully."
    else
      flash[:error] = "Error creating list. Please try again."
      render :new
    end
  end

但是我的创建功能出了问题。当我打开rails c并尝试:

时,我也有道理
u = User.first => validated user
u = List.new

我得到的错误是列表不是你的方法(我的用户)。出了什么问题?

1 个答案:

答案 0 :(得分:2)

您没有提供有关错误的信息,但我猜解释员抱怨在build上调用nil方法。这是因为你打电话:

@list = current_user.list.build(params.require(:list).permit(:title))

current_user.list会返回nil。你应该改为:

@list = current_user.build_list(params.require(:list).permit(:title))

has_one方法的文档