小编Bri*_*i4n的帖子

find_by_sql返回返回activeRecords关系的内容

我需要find_by_sql返回ActiveRecord :: Relation对象。似乎不可能。然后,我想用纯红宝石编写查询。

我有一张与自己有关系的表:

class Alarma < ApplicationRecord
  **belongs_to :root, class_name: "Alarma", foreign_key: "relacionada_id", optional: true
  has_many :children, class_name: "Alarma" , foreign_key: "relacionada_id"**
Run Code Online (Sandbox Code Playgroud)

这是表:

create_table "alarmas", force: :cascade do |t|
    t.string   "sysname"
    t.string   "component"
    t.string   "details"
    t.integer  "estado_id"
    t.integer  "relacionada_id"
    t.datetime "created_at",     null: false
    t.datetime "updated_at",     null: false
    t.index ["estado_id"], name: "index_alarmas_on_estado_id", using: :btree
    t.index ["severity_id"], name: "index_alarmas_on_severity_id", using: :btree
  end
Run Code Online (Sandbox Code Playgroud)

这是我在sql中的查询:

  Alarma.find_by_sql("SELECT a1.*  FROM alarmas a1 LEFT OUTER JOIN alarmas a2 ON a1.relacionada_id=a2.id 
WHERE a1.estado_id IN (1,2) OR a2.estado_id …
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails

3
推荐指数
1
解决办法
3520
查看次数

标签 统计

activerecord ×1

ruby-on-rails ×1