Rails - исключить столбец только при создании - PullRequest
0 голосов
/ 29 сентября 2018

Можем ли мы исключить столбец, который будет добавлен в оператор INSERT при создании записи?

Например, таблица students имеет id, name, skip_me столбцов.

s = Student.new(id: 1, name: 'Test')
s.save

# produces

INSERT INTO students(id, name, skip_me) VALUES(1, 'Test', null)

В то время как то, что я хочу, чтобы вставить INSERT, как это без столбца skip_me:

INSERT INTO students(id, name) VALUES(1, 'Test')

Я попытался установить s.attributes для удаления skip_me из атрибутов, но это не таклибо не работает.

Я просто хочу пропустить столбец только на CREATE, а не в SELECT и UPDATE, поэтому я не могу использовать ignored_columns.

1 Ответ

0 голосов
/ 03 октября 2018

Возможно, это не полный ответ, но вы можете попробовать переопределить attributes_for_create метод в вашей модели.

Так PK удаляется из того, что в итоге становится запросом INSERT.

Ваш класс Student будет иметь что-то вроде

  private

  def attributes_for_create(attribute_names)
    super.reject { |a| a == "some_attribute" }
  end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...