Итак, я не уверен, насколько хорошо это решение будет работать, так как приложение развивается с течением времени, но я остановился на этом потоке пока, если это поможет кому-то еще с подобной проблемой:
belong_to
Пользователь и каждый пользователь has_one
Учетная запись belong_to
Учетная запись belong_to
Учетная запись Вот код:
accounts_controller.rb
# POST /accounts
def create
@user = current_user
@account = @user.build_account(account_params)
respond_to do |format|
if @account.save
format.html { redirect_to @account, notice: 'Account was successfully created.' }
else
format.html { render :new }
end
end
end
def account_params
params.require(:account).permit(:company_name, :user_id)
end
models / account.rb
class Account < ApplicationRecord
belongs_to :user
end
models / user.rb
[ 112]
Поскольку Ваше объявление массива имеет тип примитива, Вы не получите ошибок компилятора или ошибок периода выполнения - значение по умолчанию 0 будет возвращено.
Если бы Ваш массив был массивом Объектов, то массив содержал бы null
для любого элемента, не конкретно присвоенного.
Я не возвращусь null
потому что int
тип примитива. Это возвратит значение по умолчанию int
значение, которое является 0
.
Нет никакого способа знать, был ли какой-либо элемент установлен, за исключением хранения отдельного булева массива.
В Java только ссылочные переменные инициализируются к пустому указателю. Примитивы, как гарантируют, возвратят соответствующие значения по умолчанию. Для ints это значение 0.
Нет.
Ваши элементы массива являются только достаточно большими для содержания int
s, в этом случае. Нет никакого места, чтобы хранить информацию о том, если элемент "существует". Это было выделено, таким образом это существует. В Java, недавно выделенном int
массивы будут инициализированы ко всему нулю элементов.
Можно использовать checkstyle, pmd, и findbugs на источнике (findbugs на двоичном файле), и они скажут Вам вещи как это.
К сожалению, не похоже, что они ловят эту конкретную проблему (который имеет смысл, массив, как гарантируют, будет иметь каждый членский набор к 0, пустой указатель или ложь).
Использование тех инструментов банка поймает экземпляр и участников класса (которые не являются массивами), которые используются прежде чем быть данным значения хотя (подобный вид проблемы).