2016-06-14 5 views
1

は、私は、以下の詳細の2モデルがあります。 2モデルのための私のフォームクラス以下のコードです:あなたは、私は2モデルの2ネストされた形を持って見たようRailsの5.0ネストされた改革

# Device form 
class DeviceForm < Reform::Form 
    property :name 
    property :imei 
    collection :sensor_values, form: SensorValueForm 
end 

# SensorValue form 
class SensorValueForm < Reform::Form 
    property :index 
    property :value 
    property :date_time 
end 

。ステップ1つのレコードで参照してテーブルに挿入:

(0.6ms) BEGIN 
    SQL (0.5ms) INSERT INTO "rubywebit_devices_devices" ("name", "imei", "created_at", "updated_at") VALUES ($1, $2, $3, $4) RETUR 
NING "id" [["name", "A"], ["imei", "B"], ["created_at", 2016-06-14 05:04:58 UTC], ["updated_at", 2016-06-14 05:04:58 UTC]] 
    SQL (0.5ms) INSERT INTO "rubywebit_devices_sensor_values" ("index", "value", "device_id", "created_at", "updated_at") VALUES (
$1, $2, $3, $4, $5) RETURNING "id" [["index", 1], ["value", 2.0], ["device_id", 2], ["created_at", 2016-06-14 05:04:58 UTC], ["u 
pdated_at", 2016-06-14 05:04:58 UTC]] 
    (0.8ms) COMMIT 
    (0.1ms) BEGIN 
    (0.1ms) COMMIT 

これはOKです:

df=DeviceForm.new(Rubywebit::Devices::Device.new, sensor_values: [Rubywebit::Devices::SensorValue.new]) 
df.validate(name: 'A',imei:'B',sensor_values: [index: 1, value: 2]) 
df.save 

出力されます。

そして、ステップ2で、我々は、デバイスのレコードを持っていると私は、我々が持っているDEVICE_IDでテーブルをsensor_valuesするレコードを挿入する:

df=DeviceForm.new(Rubywebit::Devices::Device.find(1), sensor_values: [Rubywebit::Devices::SensorValue.new]) 
df.validate(sensor_values: [index: 2, value: 3]) 
df.save 

出力:

Rubywebit::Devices::SensorValue Load (0.4ms) SELECT "rubywebit_devices_sensor_values".* FROM "rubywebit_devices_sensor_values" 
WHERE "rubywebit_devices_sensor_values"."device_id" = $1 [["device_id", 1]] 
    (0.2ms) BEGIN 
    SQL (13.1ms) UPDATE "rubywebit_devices_sensor_values" SET "device_id" = NULL WHERE "rubywebit_devices_sensor_values"."device_i 
d" = $1 AND "rubywebit_devices_sensor_values"."id" = 17 [["device_id", 1]] 
    SQL (0.5ms) INSERT INTO "rubywebit_devices_sensor_values" ("index", "value", "device_id", "created_at", "updated_at") VALUES (
$1, $2, $3, $4, $5) RETURNING "id" [["index", 1], ["value", 2.0], ["device_id", 1], ["created_at", 2016-06-14 05:19:51 UTC], ["u 
pdated_at", 2016-06-14 05:19:51 UTC]] 
    (0.6ms) COMMIT 
    (0.1ms) BEGIN 
    (0.1ms) COMMIT 
    (0.1ms) BEGIN 
    (0.1ms) COMMIT 

ご覧のとおり改革は追加の取引をします(UPDATE "rubywebit_devices_sensor_values" ...)なぜですか?

答えて

関連する問題