我有一个帐户表,其名称和编号列没有空约束。 我也有这段代码用于"帐户"控制器在创建动作:
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;?
答案 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