代码之家  ›  专栏  ›  技术社区  ›  Hibri

如何告诉RubyonRails,而不是插入到列中?

  •  5
  • Hibri  · 技术社区  · 14 年前

    我有一个表,上面有合并复制(SQLServer2005)。 有一个 罗吉德 列。我希望ror忽略此列,而不在此列中插入,并且在生成insert语句时不包含此列。

    3 回复  |  直到 14 年前
        1
  •  3
  •   giraff    14 年前

    this ticket 它提出了一个对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
    

    然后你可以写:

    hidden_columns :rowguid
    

    在相关模型中。

        2
  •  1
  •   Doon    14 年前

    另一个选项是创建一个隐藏列的视图。在将Rails应用程序连接到SQL Server中的旧数据库时,我已经完成了这项工作。这样,您就不必再纠结于/fight rails,并且可以轻松隐藏任何您想要的列…

        3
  •  0
  •   Hibri    14 年前

    答案同上

    方法需要定义为类方法 http://gist.github.com/504745