Rails 4 - Generic alias_attribute

时间:2018-04-06 21:59:56

标签: ruby-on-rails ruby-on-rails-4 activerecord metaprogramming alias

我正在尝试为某些模型属性制作通用alias_attribute。

由于我需要在数据库上保留我希望使属性更具可读性的字段的原始名称。

例如:GenericDataBaseColumn #=> generic_data_base_column

到目前为止,这是我所得到的,但没有按预期工作:

self.attribute_names.
    each { |attr| alias_attribute attr.split(/(?=[A-Z])/).
                   join("_").downcase.to_sym, :attr }

我正在使用alias_attribute,因为我正在使用我接收它们的一些字段作为JSON并将它们序列化,所以我想通过仅迁移来保留更改它们的可能性

我问这个问题,因为我研究过,唯一类似的问题仍未得到解答。

  

How to create dynamic attribute aliases in rails?

我仍然不确定这是否有可能实现。

由于

1 个答案:

答案 0 :(得分:0)

显然看起来像是对如何调用属性的误解。 而self.attribute_names应该是attribute_names而不是SystemStackError (stack level too deep),因为只应为实例化的元素调用该方法。

此外,在第一次修复后,我不得不跳过所有具有相同名称的属性,因为这会导致# Defining alias attributes attribute_names.each do |attr| next if attr.blank? || (attr == attr.underscore) alias_attribute attr.underscore.to_sym, attr.to_sym end

最终的实施应该是这样的:

//Insert New Data
$("#insert").click(function(){
  var title=$("#title").val();
  var desc=$("#desc").val();
  console.log(title +""+ desc);
  let myDB = window.sqlitePlugin.openDatabase({name: "mySQLite.db", location: 'default'});
  myDB.transaction(function(transaction) {...

希望这有助于其他人。 如果一些人有答案随时发布它。感谢