Направляющие: Как перечислить базу данных использование tables/objects консоли Rails?

Я задавался вопросом, могли ли Вы перечислить/исследовать, какие базы данных/объекты доступны Вам в консоли Rails. Я знаю, что Вы видите, что они используют другие инструменты, мне просто любопытно.Спасибо.

139
задан Flip 18 March 2017 в 22:48
поделиться

2 ответа

Вы, вероятно, ищете:

ActiveRecord::Base.connection.tables

и

ActiveRecord::Base.connection.columns('projects').map(&:name)

Вы, вероятно, должны обернуть их в более короткий синтаксис внутри вашего .IRBRC .

281
ответ дан 23 November 2019 в 23:19
поделиться

Если требуется обновить определенный объект, метод Refresh () может оказаться наиболее предпочтительным.

Например:

Context.Refresh(RefreshMode.OverwriteCurrentValues, objectToRefresh);

Можно также передать массив объектов или IEnumerable в качестве второго аргумента, если требуется обновить несколько объектов одновременно.

Обновить

Я вижу, о чем вы говорите в комментариях, в рефлекторе вы видите, что это происходит внутри. Refresh ():

object objectByKey = context.Services.GetObjectByKey(trackedObject.Type, keyValues);
if (objectByKey == null)
{
    throw Error.RefreshOfDeletedObject();
}

Метод, который вы связали, кажется лучшим вариантом, класс DataContext не предоставляет другого способа очистить удаленную строку. Проверки удаления и такие проверки находятся внутри метода ClearCache () ... это действительно просто проверка удаления и вызов ResetServices () в CommonDataServices ниже.. единственным плохим эффектом будет очистка любых ожидающих вставок, обновлений или удалений, которые были поставлены в очередь.

Есть еще один вариант, можете ли вы запустить другой DataContext для любой выполняемой вами операции? Он не имел бы никакого кэша... но это связано с некоторыми вычислительными затратами, поэтому, если ожидающие вставки, обновления и удаления не являются проблемой, я бы придерживался подхода ClearCache () .

-121--2688320-

Я бы:

  1. Возвратить другой объект, который представляет вид моего объекта для дисплея, например CustomerInfo.
  2. Возврат таблицы данных. Часто общий контейнер является самым простым и лучшим способом.

Если T в вашем базовом репозитории является Заказчиком, то я думаю, что вы неправильно применяете концепцию агрегированных корней, хотя я не строгий евангелист . Я бы разработал репозиторий для Клиента, который вернул бы любые данные, логически или удобно сгруппированные с Клиентом, включая DataTables или объекты только для чтения, которые являются представлениями данных Клиента.

-121--1498969-

Его начало, он может перечислить:

models = Dir.new("#{RAILS_ROOT}/app/models").entries

Глядя еще...

-3
ответ дан 23 November 2019 в 23:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: