В магазине Модель:
class Shop < ActiveRecord::Base
alias_attribute :token, :basic_token
# basic_token column is set NOT to be NULL in DB
end
В магазине фабрики:
FactoryGirl.define do
factory :shop do
basic_token '12313123123123123123123'
...
...
end
end
В контроллере магазинов RSPEC:
require 'rails_helper'
RSpec.describe ShopsController, type: :controller do
before do
@shop = create(:shop) # FAILS
=> Failure/Error: @shop = create(:shop)
=> ActiveRecord::StatementInvalid:
=> PG::NotNullViolation: ERROR: null value in column "basic_token" violates not-null constraint
end
describe "" do
........
end
end
Тесты консоли Rails:
WITH alias_attribute:
(byebug) @shop = build(:shop)
#<Shop remote_id: 1110212666, domain: "abc.myshopify.com", basic_token: nil, created_at: nil, updated_at: nil, ... >
(byebug) @shop.valid?
true
(byebug) @shop.errors.messages
{}
WITH alias_attribute commented (# alias_attribute :token, :basic_token):
(byebug) @shop = build(:shop)
#<Shop remote_id: 1110212666, domain: "abc.myshopify.com", basic_token: "12313123123123123123123", created_at: nil, updated_at: nil, ... >
(byebug) @shop.valid?
true
(byebug) @shop.errors.messages
{}
Комментируя alias_attribute :token, :basic_token
, и это работает.
Есть идеи, почему я не могу сделать запись с alias_attribute
?
Обратите внимание, что это работает в разработке || производственная среда, только получая ошибку в тестировании.
Спасибо.