首页 > 解决方案 > 如何将字段添加到 Rails 模型?

问题描述

我有一个模型Person,并且基于一个条件,我想根据一个条件向它添加一个字段。

applied也就是说,如果满足控制器中的条件,我需要一个字段。

@person.applied = true在方法返回之前做了,如果我做了puts @person.appliedtrue按预期记录。但是,如果我这样做puts @personapplied则不会列出该字段,而所有其他字段(存储在数据库中)都会列出。

我也有attr_accessor :applied在模型中。

我究竟做错了什么?

编辑(片段)

 # people_controller.rb
 def show
    if @application
      @person.applied = true
    end

    puts @person.applied # logs true
    puts @person # applied is not included still

    render json: @person
 # person.rb

 class Person < ApplicationRecord
   attr_accessor :applied
 end

标签: ruby-on-railsruby

解决方案


做这个:

# person.rb

 class Person < ApplicationRecord
   attribute :applied
 end
 # people_controller.rb
 def show
    if @application
      @person.applied = true
    end

    p @person.applied # logs true
    p @person # applied is not included still

    render json: @person
    # rest of your code

这适用于 rails 6 和 sqlite3

请注意,这是一个虚拟属性。您必须在要使用它的控制器操作中设置它,因为它不会保留在数据库中。


推荐阅读