這就是我想要使用主動查詢方法實作的目標 我被要求不要進行陣列迭代,而是使用主動查詢方法來實作這一點
def index
@measurements = current_user.measurements.with_units.created_on
data = Hash.new { |h, k| h[k] = [] }
@measurements.each do |m|
data[m.unit.title] << m
end
render json: { data: data, status: :ok }
end`
這是我希望使用主動查詢方法實作的預期 JSON 的影像,這 是我的測量和單位模型
class Measurement < ApplicationRecord
belongs_to :user
belongs_to :unit
scope :with_units, -> { includes(:unit) }
scope :created_on, -> { order('created_at DESC') }
validates :value, presence: true
end
Model for Units
class Unit < ApplicationRecord
has_many :measurements
scope :with_measurements, -> { includes(:measurements) }
scope :with_user_id, ->(user) { where(user_id: user.id) }
validates :title, presence: true
end
Schema table for measurements
create_table "measurements", force: :cascade do |t|
t.integer "unit_id"
t.integer "user_id"
t.float "value"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
end
Schema table for Units
create_table "units", force: :cascade do |t|
t.string "title"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
end
uj5u.com熱心網友回復:
使用as_json將 ActiveRecord 集合轉換為 json。
def index
@measurements = current_user.measurements.with_units.created_on
render json: { data: @measurements.as_json(include: :unit) , status: :ok }
end
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/489613.html
上一篇:關聯在3個桌面導軌中
