Я запускаю небольшой проект Rails, чтобы зарегистрировать устройства iOS здесь, в офисе, просто для изучения инфраструктуры, и я столкнулся со следующей проблемой:
Учитывая две модели: «Устройство» и «Устройство».Владелец "со следующими ассоциациями:
class Owner < ActiveRecord::Base
has_many :devices
end
class Device < ActiveRecord::Base
belongs_to :owner
belongs_to :os_version
belongs_to :device_type
end
Схемы:
CREATE TABLE "devices" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"uuid" varchar(255),
"imei" varchar(255),
"device_type_id" integer,
"label" varchar(255),
"os_version_id" integer,
"owner_id" integer,
"created_at" datetime,
"updated_at" datetime,
"serial" varchar(255)
);
CREATE TABLE "owners" (
"id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
"first_name" varchar(255),
"last_name" varchar(255),
"username" varchar(255),
"created_at" datetime,
"updated_at" datetime
);
Я пытаюсь заставить контроллер охотно получить владельца со всеми его устройствами, поэтому я попробовалследующее:
class OwnerController < ApplicationController
def list
@owners = Owner.includes(:devices).all
respond_to do |format|
format.xml { render :xml=>@owners }
format.any(:json, :html) { render :json => @owners }
end
end
end
Контроллер успешно перечисляет всех владельцев, но устройства нигде не найдены.
Я также пытался использовать область видимости по умолчанию в классе Owner, но все равно ничего хорошего.
При использовании rails console
любой запрос, использующий Owner.include(:devices)
, не может вернуть информацию об устройстве, но в Owner.first.devices
есть все.
Есть идеи о том, что я могу делать неправильно?
Спасибо!