Rails" NOT NULL约束失败:table.column"

时间:2017-02-22 06:35:29

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 model-view-controller ruby-on-rails-3.2

我有一个帐户表,其名称和编号列没有空约束。 我也有这段代码用于"帐户"控制器在创建动作:

def create
    account_number = rand.to_s[2..9]
    @account = Account.new(user_id: current_user.id, name: 'hello', number: account_number)

    respond_to do |format|
        if @account.save
            format.html { redirect_to @account, notice: "Account was successfully created.\n Your account number is: #{account_number}" }

和我的"帐号"模型很简单:

class Account < ApplicationRecord
  belongs_to :user

  attr_accessor :name
  attr_accessor :number
  attr_accessor :amount
end

但是当我去/ accounts / new并提交时,它给了我这个错误:

  

NOT NULL约束失败:accounts.name

但为什么呢?因为我很难将这个名字命名为#34;属性为&#34;你好&#34;在构造函数中,为什么它不填充&#34; name&#34;列&#34;你好&#34;?

2 个答案:

答案 0 :(得分:1)

attr_accessor移除Account来电。它们可能会覆盖从模式生成的内置方法,这会导致任何数量的问题。

您是否创建并运行迁移以将这些属性添加到accounts表?

答案 1 :(得分:0)

如果您有:user_id:name:number:amount字段,则无需为其添加attr_accessor

此外,您可以在:name上添加模型级验证,以避免database-level错误。

class Account < ApplicationRecord
  belongs_to :user

  validates :name, presence: true
end