0

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

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

谢谢

4

2 回答 2

2

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

于 2012-04-20T13:43:10.083 回答
1

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

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

于 2012-04-20T14:35:14.253 回答