列中包含#的栏目名称和已损坏的activemodel
我有一个带有(可怕的)列名的遗留表,如LYEAR#2,LYEAR#3 …… LYEAR#9
我为它设置了一个名为Glamas的模型
如果我有:
accounts = Glamas.all account_mains = accounts.collect(&:ACCOUNT_MAIN)
它打破了这个错误:
SyntaxError: compile error /usr/lib/ruby/gems/1.8/gems/activemodel-3.0.3/lib/active_model/attribute_methods.rb:273: syntax error, unexpected kUNDEF, expecting ')' undef :LYEAR#9? ^ /usr/lib/ruby/gems/1.8/gems/activemodel-3.0.3/lib/active_model/attribute_methods.rb:274: syntax error, unexpected kEND, expecting $end from /usr/lib/ruby/gems/1.8/gems/activemodel-3.0.3/lib/active_model/attribute_methods.rb:274:in `define_attribute_methods' from /usr/lib/ruby/gems/1.8/gems/activemodel-3.0.3/lib/active_model/attribute_methods.rb:262:in `each' from /usr/lib/ruby/gems/1.8/gems/activemodel-3.0.3/lib/active_model/attribute_methods.rb:262:in `define_attribute_methods' from /usr/lib/ruby/gems/1.8/gems/activemodel-3.0.3/lib/active_model/attribute_methods.rb:261:in `each' from /usr/lib/ruby/gems/1.8/gems/activemodel-3.0.3/lib/active_model/attribute_methods.rb:261:in `define_attribute_methods' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/attribute_methods.rb:13:in `define_attribute_methods' from /usr/lib/ruby/gems/1.8/gems/activerecord-3.0.3/lib/active_record/attribute_methods.rb:41:in `method_missing' from (irb):31:in `to_proc' from (irb):31:in `collect' from (irb):31 from :0
这是activemodel的一个问题,还是我可以用我的代码中的东西修复它?
这是轨道3顺便说一句。
#glamas.rb class Glamas < ActiveRecord::Base establish_connection "turnkey" end
和…
#database.yml turnkey: adapter: mysql encoding: utf8 reconnect: false database: turnkey pool: 5 username: root password: socket: /var/run/mysqld/mysqld.sock
我想从遗留机器中拉出表格,我想(如果我绝对必须)我可以在将它们拉过来时重新命名列,但这个过程已经是一个巨大的痛苦和处理器密集型。
您无法将这些表与Active Record一起使用。 AR为您的类定义实例方法,这些方法的名称与列相同,并且在方法名称中不允许使用ruby #
(或者任何名称,因为它是注释字符)。
我建议使用更合理的名称在数据库中创建视图,或者只是重命名列。
- 将模型动态连接到正在运行的应用程序中的数据库?
- 迁移时需要使用add_index来获取belongs_to / has_many关系吗? (Rails 3.2,Active Record)
- ActiveRecord create:传入属性数组
- Rails:你能将参数传递给after_create方法吗?
- 设计:新用户注册问题,PG :: ProtocolViolation。 Rails4,Postgres
- 如何在Ruby on Rails中获取ActiveRecord执行的最后一个SQL查询?
- Railsvalidation虚拟属性
- Rails 3和Rspec:计数器缓存列在预期1时更新为2
- Rails:如何在activerecord中查询模型的时间范围,而不是日期