无法将计算字段添加到新记录

cannot add computed field to new record

我正在我的客户 table 中创建新的客户记录。但是,除了名字和姓氏之外,我还想添加一个 "full_name" 字段。因此,在成功创建记录(使用参数)后,我尝试更新新的 full_name 属性,但它没有被保存。这是创建新记录的代码:

  def create
    @customer = Customer.new(customer_params)
    if @customer.save
      redirect_to customer_index_path
    else
      render 'new'  # user entered values available in @customer
    end
  end

以下是我修改代码以计算全名和更新记录的方法:

  def create
    # todo this is not storing full_name
    fn = params[:first_name].to_s.strip
    ln = params[:last_name].to_s.strip
    @customer = Customer.new(customer_params)
    if @customer.save
      # construct full name & save (again) before redirecting
      @customer[:full_name] = fn + ' ' + ln
      @customer.save
      redirect_to customer_index_path
    else
      render 'new'  # user entered values available in @customer
    end
  end

但它没有将 full_name 保存到数据库。我做错了什么?

提前致谢。

您的代码应该可以工作。将第二个 @customer.save 替换为 @customer.save!,然后查看该保存是否按预期执行。

对于这种行为,我会使用 ActiveRecord 回调。你不应该在你的控制器里放那么多东西。

class Customer < ActiveRecord::Base
  before_save :set_full_name

  private

  def set_full_name
    self.full_name = "#{first_name} #{last_name}"
  end
end