0

私は、実際のモデル テーブルに保持されない動的属性を追加できる gem rails4 を作成しています。代わりに、2 番目のテーブルに参照を保存します。

今、私は動的に追加された属性にデフォルト値を設定しようとしているインスタンスメソッドに before_validation を持っています。次のようなエラーが表示されます

can't write unknown attribute

コードは

self[attr_name.to_sym]=attr_type[:default_value]

存在しないフィールドのインスタンス メソッドからセッターを実行する方法について、親切にアドバイスしてください。

ClassMethods で同じために instance_variable_set を使用しました。

4

1 に答える 1

1

attr_accessorモデルでこの目的のためにメソッドを 使用できます。

class Sample << ActiveRecord::Base  

  attr_accessor :attr_name  

  #setter method
  def attr_name=(val)
    self[:attr_name] = val
  end  

  #getter method
  def attr_name
     self[:attr_name]
  end
end  

これで、次のように任意の where インスタンス メソッドを呼び出すことができます。

self[attr_name.to_sym]=attr_type[:default_value]

于 2015-11-04T11:29:29.237 に答える