Nano Hash - криптовалюты, майнинг, программирование

Ruby on rails 5 показывает все результаты в зависимости от количества связанной таблицы

У меня 2 модели, одна магазинная, а другая адресная. У магазина много адресов, и адрес принадлежит магазину.

Я хочу выбрать (искать) по имени и отфильтровать все магазины, которые соответствуют искомому слову и разделены для каждого адреса, например. search param[:name].

def filter_shops
     @shops = Shop.where("name ILIKE CONCAT('%',?,'%')",params[:name])
end

Это действие ищет все магазины по имени параметра, но я хочу, чтобы если магазин имеет 2 или 3 адреса, он должен был отображаться в результате 2-3 раза.

Пример (ожидаемые результаты):

params[:name] value is "sho"

[{name: "shopOne",
 address: {
     id: 1,
     direction: "av. jojojo 321"}

},{name: "shopOne",
     address: {
           id: 2,
        direction: "onother avenue "}},
 {name: "shopTwo",
     address: {
           id: 7,
           direction: "av. of other shop 333"}
}]

Ответы:


1

Вам необходимо JOIN таблицы:

Shop.joins(:adresses).where("shops.name ILIKE CONCAT('%',?,'%')", params[:name])

ОБНОВЛЕНИЕ

Если вам нужно создать массив из примера, вы можете сделать это так (используя несколько методов для удобства):

def create_array
  addresses.map do |address|
    {
      name: address.shop.name,
      address: {
        id:        address.id,
        direction: address.direction
      }
    }
  end
end

def addresses
  Address.eager_load(:shop)
         .where("shops.name ILIKE CONCAT('%',?,'%')", params[:name])
         .order(:shop_id)
end
19.06.2018
  • я тестирую ваш код, результат близок, но не нужен мне. магазин появляется 2-3 раза, так что это хорошо, но у каждого есть массив адресов, пример. shopOne с 2-мя адресами, а следующий объект такой же, shopOne с массивом из 2-х адресов, но мне нужно, как показано в примере, какие-то другие идеи? 19.06.2018
  • каждый магазин с одним адресом и показано в результате, сколько у него адресов 19.06.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..