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

または、この方法で行うことができます。これには、アナトリーが以下で行ったような移行を使用して、フィールドをデータテーブルに追加する必要があります

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_accessorないでくださいattr_accesible

ターミナルでこれを試して、新しい属性を追加します。

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