我正在尝试向rails中的数据库查询添加一个新变量(方法)。我不想在数据库中添加新字段,我想获取现有列并使用它来创建新方法。但是,它不会抛出错误或任何东西,它只是不可用。有什么想法吗?
class Task < ActiveRecord::Base
attr_accessible :old_field, :new_field
def after_initialize
self.new_field = :old_field * 2
end
end
部分地,我不确定这个逻辑是否存在于模型或控制器中。
答案 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