0

我正在编写一个 gem rails4,我可以在其中添加不会保留在实际模型表中的动态属性,而是将它保存在我的第二个表中并提供参考。

现在我有一个实例方法的 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 回答