如何在轨道上告诉红宝石,而不是插入柱子?

Hib*_*bri 5 ruby ruby-on-rails

我有一个表,其上有合并复制(SQL Server 2005).有一个rowguid列.我希望RoR忽略此列,而不是插入此列,并且在生成INSERT语句时不包括此列.

gir*_*aff 3

请参阅此票证,其中建议对 Rails 进行修补。您可以将以下代码添加到新文件中/config/initializers/hidden_columns.rb

require "activerecord"

class << ActiveRecord::Base 
  def hidden_columns(*hidden) 
    write_inheritable_array("hidden_column", hidden.collect(&:to_s)) 
  end

  def columns_hidden
    read_inheritable_attribute("hidden_column") || [] 
  end 

  def columns 
    unless defined?(@columns) && @columns 
      @columns = connection.columns(table_name, "#{name} Columns").delete_if {|c| columns_hidden.member?(c.name) } 
      @columns.each {|column| column.primary = column.name == primary_key} 
    end 
    @columns 
  end
end
Run Code Online (Sandbox Code Playgroud)

然后你可以写:

hidden_columns :rowguid
Run Code Online (Sandbox Code Playgroud)

在相关型号中。