Rails:向模型(或控制器)实例添加变量

时间:2012-12-17 17:20:46

标签: ruby-on-rails ruby activerecord

我正在尝试向rails中的数据库查询添加一个新变量(方法)。我不想在数据库中添加新字段,我想获取现有列并使用它来创建新方法。但是,它不会抛出错误或任何东西,它只是不可用。有什么想法吗?

class Task < ActiveRecord::Base

  attr_accessible :old_field, :new_field

  def after_initialize
    self.new_field = :old_field * 2
  end  
end

部分地,我不确定这个逻辑是否存在于模型或控制器中。

2 个答案:

答案 0 :(得分:4)

class Task < ActiveRecord::Base

  attr_accessible :old_field

  def new_field()
    self.old_field * 2
  end  
end

或者你可以这样做,这需要你使用Anatoliy下面的迁移将字段添加到数据表中

class Task < ActiveRecord::Base

  attr_accessible :old_field, :new_field
  before_save :calc_new_field

  private
    def calc_new_field
      self.new_field = self.old_old_field * 2
    end  
end

答案 1 :(得分:0)

要添加虚拟属性,您应使用attr_accessor而不是attr_accesible

在终端中尝试添加新属性:

rails g migration AddNewFieldToTasks new_field:integer
rails db:migrate