Как сказать ruby ​​на рельсах, чтобы не вставлять в столбец? - PullRequest
5 голосов
/ 30 июля 2010

У меня есть таблица с репликацией слиянием (SQL Server 2005). Существует столбец rowguid . Я хочу, чтобы RoR игнорировал этот столбец, не вставлял в него и не включал его при генерации оператора INSERT.

Ответы [ 3 ]

3 голосов
/ 30 июля 2010

См. этот билет , который предлагает патч для рельсов. Вы можете добавить следующий код в новый файл /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

в соответствующих моделях.

1 голос
/ 02 августа 2010

Другим вариантом будет создание представления, которое скрывает столбец (столбцы).Я сделал это, прикрепив приложение rails к устаревшей БД в SQL Server.Таким образом, вам не нужно связываться с рельсами и бороться с ними, и вы можете легко спрятать любые столбцы, которые хотите ...

0 голосов
/ 02 августа 2010

Ответ такой же, как и выше

Метод должен быть определен как метод класса http://gist.github.com/504745

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...