Что такое код ActiveRecord Rails для генерации этого «необработанного» SQL или его функционального эквивалента?MySql

Форум по Mysql
Ответить Пред. темаСлед. тема
Anonymous
 Что такое код ActiveRecord Rails для генерации этого «необработанного» SQL или его функционального эквивалента?

Сообщение Anonymous »

Я безуспешно пытался генерировать использование методов запроса Rails. Список всех активных поставщиков с подсчетом Active связанными исследованиями. Даже поставщики с нулевыми исследованиями должны сообщать. Мои усилия с методами запросов Rails не возвращают поставщиков без ассоциированных активных исследований. Пример: < /p>
(Provider.left_joins(:studies)
.where("studies.active = true AND providers.active = true")
.group("providers.id")
.select("providers.id AS 'prov_id', COUNT('studies.id') AS 'studies_count'"))
.order("studies_count ASC")
< /code>
возвращает: < /p>
[#
, #]
< /code>
Я могу достичь своей цели с помощью RAW SQL. Я подозреваю, что это более эффективно, чем использование функционально эквивалентных методов запросов рельсов. Однако я не могу проверить это, поскольку у меня нет функционально эквивалентного кода Rails. Предложения? < /P>
Это работает с SQLite3. Должен работать с PostgreSQL и MySQL. < /P>
ActiveRecord::Base.connection.execute 0},
{"prov_id"=>978749543, "study_count"=>0},
{"prov_id"=>298486374, "study_count"=>4},
{"prov_id"=>980190962, "study_count"=>6} ]
< /code>
Обратите внимание, что показаны поставщики без каких -либо связанных исследований. Указатели, где функционируют правильно.
Модели:
class Provider < ApplicationRecord
has_many :studies
end

class Study < ApplicationRecord
belongs_to :provider
end

schema.rb
create_table "providers", force: :cascade do |t|
t.string "name", null: false
t.boolean "active", default: true, null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

create_table "studies", force: :cascade do |t|
t.integer "provider_id", null: false
t.boolean "active", default: true, null: false
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["provider_id"], name: "index_studies_on_provider_id"
end


Подробнее здесь: https://stackoverflow.com/questions/796 ... -functiona
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «MySql»