0

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

class Task < ActiveRecord::Base

  attr_accessible :old_field, :new_field

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

部分地,我不确定这个逻辑是进入模型还是控制器。

4

2 回答 2

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
于 2012-12-17T17:31:06.947 回答
0

要添加虚拟属性,您应该使用attr_accessornotattr_accesible

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

rails g migration AddNewFieldToTasks new_field:integer
rails db:migrate
于 2012-12-17T17:25:06.760 回答