Ruby on rails 动态设置表名,一个bug?
database.yml看起来像Ruby on rails 动态设置表名,一个bug?,ruby-on-rails,ruby,Ruby On Rails,Ruby,database.yml看起来像 development: adapter: mysql2 host: localhost database: database1 username: root password: external: adapter: mysql2 host: localhost database: database2 username: root password: 我有一个类ExternalDatabaseConnection
development:
adapter: mysql2
host: localhost
database: database1
username: root
password:
external:
adapter: mysql2
host: localhost
database: database2
username: root
password:
我有一个类ExternalDatabaseConnection
这不是
ExternalDatabaseConnection.table_name = "set_different_table" #dynamic
ExternalDatabaseConnection.create(...)
投掷
unknown attribute: attribute_name
这两种情况都是在循环中发生的,所以每次对初始表集有效时,对于第二个表,它都会抛出一个错误
调试:
注:
ExternalDatabaseConnection.table_name = "payments"
ExternalDatabaseConnection.column_names
=> ["id", "customer_id", "patent_id", "amount", "currency", "date"]
ExternalDatabaseConnection.table_name = "patents"
=> "patents"
2.0.0-p451 :006 > ExternalDatabaseConnection.column_names
=> ["id", "customer_id", "patent_id", "amount", "currency", "date"]
ExternalDatabaseConnection.all
ExternalDatabaseConnection Load (0.4ms) SELECT `patents`.* FROM `patents`
=> [#<ExternalDatabaseConnection id: 1, number: "1111", description: "https://www.google.co.in", registry_date: "2014-08-20", documnetdir: nil, currency: #<BigDecimal:a8f2adc,'0.1212E2',18(27)>>, #<ExternalDatabaseConnection id: 4, number: "1", description: "jhufgtrdfyuh", registry_date: nil, documnetdir: "", currency: #<BigDecimal:a8f2258,'0.0',9(18)>>, ....]
属性没有变化,这可能是导致问题的原因
如果缺少任何信息,请进行评论
ruby 2.0.0p451
轨道3.2.17
编辑1:
尝试:
在设置表名之前
1 ExternalDatabaseConnection.table_name=nil。
2外部数据库连接。清除\u活动\u连接!并清除所有连接!
3尝试使用集合表格名称:表格1
编辑2:
ClassName.column\u名称即使在为类设置了不同的表\u名称后也不会更改我尝试了以下方法。这可能会有帮助 :set_table_name方法用于动态更改表名。您可以设置表名并获取属性名而不是列名 付款表 ExternalDatabaseConnection.set\表\名称:付款 ExternalDatabaseConnection.first.attribute\u名称 然后必须重置列信息 ExternalDatabaseConnection.reset\u列\u信息 专利: ExternalDatabaseConnection.set\u表\u名称:专利 ExternalDatabaseConnection.first.attribute\u名称
我试过这样做。这可能会有帮助 :set_table_name方法用于动态更改表名。您可以设置表名并获取属性名而不是列名 付款表 ExternalDatabaseConnection.set\表\名称:付款 ExternalDatabaseConnection.first.attribute\u名称 然后必须重置列信息 ExternalDatabaseConnection.reset\u列\u信息 专利: ExternalDatabaseConnection.set\u表\u名称:专利 ExternalDatabaseConnection.first.attribute\u名称
从您发布的控制台图像,我可以看到您正在提供ExternalDatabaseConnection.createnumber:1234,但指定的表中没有明显为您提供未知属性编号的数字列。我想您是想提供ExternalDatabaseConnection.createamount:1234@Pavan检查注释最后一点ExternalDatabaseConnection.all结果。您要创建的图像如何我没有看到任何名为number ExternalDatabaseConnection.column\u names output的列。哪个特定的rails版本Rails 3'涵盖了您发布的控制台图像中的30多个版本,我可以看到您正在提供ExternalDatabaseConnection.createnumber:1234,但指定的表中没有明显为您提供未知属性编号的数字列。我想您是想提供ExternalDatabaseConnection.createamount:1234@Pavan检查注释最后一点ExternalDatabaseConnection.all结果。您要创建的图像如何我没有看到任何名为number ExternalDatabaseConnection.column\u names output的列。哪个特定的rails版本Rails 3'涵盖30多个版本您必须重置列信息以及我更新了answerNice!你还需要帮助吗?如果你愿意的话,我可以开始聊天so@Hudsontable_name=可以代替set_table_name。当set_table_name运行queryNice时。等我有空的时候我会用这个的@RichPeck感谢您的反馈。您必须重置列信息,我更新了答案尼斯!你还需要帮助吗?如果你愿意的话,我可以开始聊天so@Hudsontable_name=可以代替set_table_name。当set_table_name运行queryNice时。等我有空的时候我会用这个的@RichPeck感谢您的反馈。
unknown attribute: attribute_name
ExternalDatabaseConnection.table_name = "payments"
ExternalDatabaseConnection.column_names
=> ["id", "customer_id", "patent_id", "amount", "currency", "date"]
ExternalDatabaseConnection.table_name = "patents"
=> "patents"
2.0.0-p451 :006 > ExternalDatabaseConnection.column_names
=> ["id", "customer_id", "patent_id", "amount", "currency", "date"]
ExternalDatabaseConnection.all
ExternalDatabaseConnection Load (0.4ms) SELECT `patents`.* FROM `patents`
=> [#<ExternalDatabaseConnection id: 1, number: "1111", description: "https://www.google.co.in", registry_date: "2014-08-20", documnetdir: nil, currency: #<BigDecimal:a8f2adc,'0.1212E2',18(27)>>, #<ExternalDatabaseConnection id: 4, number: "1", description: "jhufgtrdfyuh", registry_date: nil, documnetdir: "", currency: #<BigDecimal:a8f2258,'0.0',9(18)>>, ....]