Rails与旧数据库集成

时间:2012-04-20 13:38:52

标签: ruby-on-rails activerecord

我有一个情况。我有一个旧系统,我们正在将代码替换为Rails。 因此,该表是合同,并且在旧系统中它有大约20个字段,但是在这个新的软件内置rails,我将只使用5个字段,一段时间后我们将删除所有其他字段。

默认情况下,rails会映射表格思想的所有行。如何选择我想要在ActiveRecord下映射的字段?

感谢

2 个答案:

答案 0 :(得分:2)

ActiveRecord动态地将字段映射到Ruby方法,因此您不需要排除它们只是不要使用它们,当您删除它们时,您将不会破坏任何内容。

答案 1 :(得分:1)

我在数据库中使用rails之外的ActiveRecord时使用了(hacky)解决方案,而我没有创建。基本上我挖掘了ActiveRecord代码并发现它利用类方法:: column_names来促进字段的映射。正如其他人所指出的那样,简单地不使用您打算从数据库中删除的模型中的字段就可以正常工作。但是有可能Db的结构使用了一个不能与ActiveRecord一起使用的保留字。我添加了以下代码来隐藏ActiveRecord中的“类”字段,因为“class”是一个保留名称并且引发了各种错误。

private
def self.column_names
  orig = super
  orig.delete('class')
  return orig
end

您当然可以修改它以从返回的数组中删除多个键,如:

private
def self.column_names
  orig = super
  ['class', 'field_one', 'field_two'].each do |field_name|
    orig.delete(field_name)
  end
  return orig
end

希望这有帮助, / salernost