我正在编写一个gem rails4,我可以添加动态属性,这些属性不会在实际模型表中保留,而是会在我的第二个表中保存一个引用。
现在我有一个实例方法的before_validation,我试图将默认值设置为动态添加的属性。 我收到错误
can't write unknown attribute
代码是
self[attr_name.to_sym]=attr_type[:default_value]
请就此提出建议,如何从不存在字段的实例方法中设置setter。
我在ClassMethods中使用了instance_variable_set。
答案 0 :(得分: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 instance方法,如下所示。
self[attr_name.to_sym]=attr_type[:default_value]