#ruby-on-rails #scenic
#ruby-on-rails #scenic
Вопрос:
Модель контакта имеет значения по умолчанию для столбца is_pickup
Contact.new
=> id: 2, email: nil, order_id: nil, is_pickup: true
Теперь я подключаю таблицу контактов к представлениям rails db с помощью scenic gem
class OrderContact < ApplicationRecord
self.table_name = 'temp_contacts'
self.primary_key = :id
...
end
Проблема в том, что я не могу установить значения по умолчанию для записи.
я попытался добавить следующее в модель контактов
def is_pickup
self[:is_pickup] || true
end
Но все равно он не отображается в консоли rails
Contact.new
=> id: 2, email: nil, order_id: nil, is_pickup: nil
Мне нужно установить значение по умолчанию при инициализации записи.
Есть идеи о том, как установить значения по умолчанию для модели при использовании представлений db?
Комментарии:
1. Если я правильно понимаю
Contact
, указывает на таблицу (с правильными значениями по умолчанию) иOrderContact
указывает на представление. ПочемуContact
больше не установлены значения по умолчанию? Вы пытаетесь создать новый контакт наOrderContact
? Вы не можете создать новый элемент в представлении, вы всегда должны создавать его в таблице (она же соответствующая модель).
Ответ №1:
вы можете указать значение по умолчанию в миграциях
change_column_default :contacts, :is_pickup, true
или вы можете добавить обратный вызов в свою модель
class Contact < ActiveRecord::Base
after_initialize :init
def init
self.is_pickup ||= true
end
end