Size: a a a

Saint P Ruby Community

2019 October 20

IK

Igor Khodyrev in Saint P Ruby Community
Отлично!
источник

IT

Ivan Takarlikov in Saint P Ruby Community
Но пока неясно правильно ли он делает выгрузку
источник

IT

Ivan Takarlikov in Saint P Ruby Community
щас пытаюсь собрать edge case какой нить
источник

IK

Igor Khodyrev in Saint P Ruby Community
А покажи запросы
источник

IK

Igor Khodyrev in Saint P Ruby Community
Там уже понятно будет
источник

IT

Ivan Takarlikov in Saint P Ruby Community
какие именно?
источник

IK

Igor Khodyrev in Saint P Ruby Community
Ну которые база делает при запросе ассоциации
источник

IT

Ivan Takarlikov in Saint P Ruby Community
irb(main):016:0> PSerializer.new(P.includes({ as: :c }).first, { include: [:as, :'as.c'] }).serialized_json
 P Load (0.2ms)  SELECT  "ps".* FROM "ps" ORDER BY "ps"."id" ASC LIMIT ?  [["LIMIT", 1]]
 A Load (0.2ms)  SELECT "as".* FROM "as" WHERE "as"."p_id" = ?  [["p_id", 1]]
 C Load (0.2ms)  SELECT "cs".* FROM "cs" WHERE "cs"."p_id" = ?  [["p_id", 1]]
источник

IK

Igor Khodyrev in Saint P Ruby Community
Не вижу тут feature, не похоже, что правильно
источник

IT

Ivan Takarlikov in Saint P Ruby Community
да
источник

IT

Ivan Takarlikov in Saint P Ruby Community
неправильно
источник

IT

Ivan Takarlikov in Saint P Ruby Community
irb(main):023:0> P.first.as.last
 P Load (0.2ms)  SELECT  "ps".* FROM "ps" ORDER BY "ps"."id" ASC LIMIT ?  [["LIMIT", 1]]
 A Load (0.2ms)  SELECT  "as".* FROM "as" WHERE "as"."p_id" = ? ORDER BY "as"."id" DESC LIMIT ?  [["p_id", 1], ["LIMIT", 1]]
=> #<A id: 5, title: "Title", feature: "feature-kek", p_id: 1, created_at: "2019-10-20 11:54:29", updated_at: "2019-10-20 11:54:29">
irb(main):024:0> P.first.as.last.c
 P Load (0.3ms)  SELECT  "ps".* FROM "ps" ORDER BY "ps"."id" ASC LIMIT ?  [["LIMIT", 1]]
 A Load (0.1ms)  SELECT  "as".* FROM "as" WHERE "as"."p_id" = ? ORDER BY "as"."id" DESC LIMIT ?  [["p_id", 1], ["LIMIT", 1]]
 C Load (0.1ms)  SELECT  "cs".* FROM "cs" INNER JOIN "ps" ON "cs"."p_id" = "ps"."id" WHERE "ps"."id" = ? LIMIT ?  [["id", 1], ["LIMIT", 1]]
=> #<C id: 1, title: "cTitle-0", feature: "feature-0", p_id: 1, created_at: "2019-10-20 11:26:52", updated_at: "2019-10-20 11:26:52">
irb(main):025:0>
источник

IT

Ivan Takarlikov in Saint P Ruby Community
только через P связь сработала
источник

IK

Igor Khodyrev in Saint P Ruby Community
Хм, попробуй убрать through, у тебя есть же p_id и в a и в c, попробуй ключ (p_id, feature)
источник

IK

Igor Khodyrev in Saint P Ruby Community
Получишь обычную ассоциацию с композитным ключом
источник

IT

Ivan Takarlikov in Saint P Ruby Community
всмысле как foreign и primary key указать композитный ключ?
источник

IK

Igor Khodyrev in Saint P Ruby Community
Да
источник

IT

Ivan Takarlikov in Saint P Ruby Community
а это на уровне ассоциации можно указать вычисляемый?
источник

IT

Ivan Takarlikov in Saint P Ruby Community
или надо добавлять фактически в базу ключ
источник

IK

Igor Khodyrev in Saint P Ruby Community
По идее можно, массив [:p_id, :feature]
источник