У меня есть массив как это
a = []
a << B.new(:name => "c")
a << B.new(:name => "s")
a << B.new(:name => "e")
a << B.new(:name => "t")
Как я могу сохранить его сразу?
a.each(&:save)
Это вызовет B#save
для каждого элемента в массиве.
В VBA предполагается, что lCol является номером столбца:
function ColNum2Letter(lCol as long) as string
ColNum2Letter = Split(Cells(1, lCol).Address, "$")(0)
end function
-121--1320895- Поскольку оператор блокировки эквивалентен:
System.Threading.Monitor.Enter(x);
try {
...
}
finally {
System.Threading.Monitor.Exit(x);
}
Можно ли просто сделать это?
bool ObjectWasUnlocked(object x)
{
if(System.Threading.Monitor.TryEnter(x))
{
System.Threading.Monitor.Exit(x);
return true;
}
else
{
return false;
}
}
Обратите внимание, что я называю эту функцию «Объект Был разблокирован» в отличие от «ObjectIsUnlocked». Нет никакой гарантии, что он все еще будет разблокирован, когда функция вернется.
-121--3235593-B.transaction do
a.each(&:save!)
end
Создается транзакция, циклически проходящая через каждый элемент массива и вызывающая element.save.
Вы можете прочитать о транзакциях ActiveRecord и каждого метода в API Rails и Ruby.