AMcoder - javascript, python, java, html, php, sql

ActiveRecord::SubclassNotFound, անկախ նրանից, թե որ սյունակի անունը կընտրեմ

Իմ դասերի համար

class User < ActiveRecord::Base

  self.inheritance_column = :user_type
  scope :customers, -> { where(user_type: '1') }
  scope :freight_forwarders, -> { where(user_type: '2') }
end

class FreightForwarder < User

  has_many :quotes, foreign_key: "ff_id"

end

class Customer < User

  has_many :quotes, foreign_key: "ff_id"

end

[1] Ես ստանում եմ հետևյալ սխալը, երբ փորձում եմ զանգահարել User.customers

ActiveRecord::SubclassNotFound. Մեկ աղյուսակի ժառանգման մեխանիզմը չհաջողվեց գտնել «1» ենթադասը: Այս սխալն առաջացել է, քանի որ «user_type» սյունակը վերապահված է ժառանգության դեպքում դասը պահելու համար: Խնդրում ենք վերանվանել այս սյունակը, եթե մտադիր չէիք այն օգտագործել ժառանգության դասը պահելու համար կամ վերագրեք User.inheritance_column՝ այդ տեղեկատվության համար մեկ այլ սյունակ օգտագործելու համար:

[2] երբ ես փորձում եմ զանգահարել Customer.all հարցումը կատարվում է այսպես.

SELECT "users".* FROM "users" WHERE "users"."user_type" IN (0)

Ես չեմ կարողանում հասկանալ, թե ինչու է «0», պետք է լինի «1»:


Պատասխանները:


1

STI դասի ամբողջական անվանումը պահվում է user_type սյունակում և ոչ թե '0' կամ '1': Ստուգեք find_sti_class դասի մեթոդը:

Այստեղ մեթոդը փորձում է գտնել դաս 1 անունով

Մեկ աղյուսակի ժառանգման մեխանիզմը չհաջողվեց գտնել «1» ենթադասը:

Փոխեք ձեր շրջանակները դեպի

  scope :customers, -> { where(user_type: 'Customer') }
  scope :freight_forwarders, -> { where(user_type: 'FreightForwarder') }

Ինչ վերաբերում է Customer.all հարցմանը. Ես չգիտեմ, թե ինչպես է այն առաջացնում այս հարցումը, բայց միգուցե դուք ինչ-որ բան վերացրել եք, երբ սահմանել եք այդ շրջանակները:

28.11.2015
Նոր նյութեր

Օգտագործելով Fetch Vs Axios.Js-ը՝ HTTP հարցումներ կատարելու համար
JavaScript-ը կարող է ցանցային հարցումներ ուղարկել սերվեր և բեռնել նոր տեղեկատվություն, երբ դա անհրաժեշտ լինի: Օրինակ, մենք կարող ենք օգտագործել ցանցային հարցումը պատվեր ներկայացնելու,..

Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար
Տիրապետել հանգստության արվեստին. մշակողի ուղեցույց՝ ճնշման տակ ծաղկելու համար Ինչպե՞ս հանգստացնել ձեր միտքը և աշխատեցնել ձեր պրոցեսորը: Ինչպես մնալ հանգիստ և զարգանալ ճնշման տակ...

Մեքենայի ուսուցում բանկային և ֆինանսների ոլորտում
Բարդ, խելացի անվտանգության համակարգերը և հաճախորդների սպասարկման պարզեցված ծառայությունները բիզնեսի հաջողության բանալին են: Ֆինանսական հաստատությունները, մասնավորապես, պետք է առաջ մնան կորի..

Ես AI-ին հարցրի կյանքի իմաստը, այն ինչ ասում էր, ցնցող էր:
Այն պահից ի վեր, երբ ես իմացա Արհեստական ​​ինտելեկտի մասին, ես հիացած էի այն բանով, թե ինչպես է այն կարողանում հասկանալ մարդկային նորմալ տեքստը, և այն կարող է առաջացնել իր սեփական արձագանքը դրա..

Ինչպես սովորել կոդավորումը Python-ում վագրի պես:
Սովորելու համար ծրագրավորման նոր լեզու ընտրելը բարդ է: Անկախ նրանից, թե դուք սկսնակ եք, թե առաջադեմ, դա օգնում է իմանալ, թե ինչ թեմաներ պետք է սովորել: Ծրագրավորման լեզվի հիմունքները, դրա..

C++-ի օրական բիթ(ե) | Ամենաերկար պալինդրոմային ենթաշարը
C++ #198-ի ամենօրյա բիթ(ե), Ընդհանուր հարցազրույցի խնդիր. Ամենաերկար պալինդրոմային ենթատող: Այսօր մենք կանդրադառնանք հարցազրույցի ընդհանուր խնդրին. Ամենաերկար palindromic substring...

Kydavra ICAReducer՝ ձեր տվյալների ծավալայինությունը նվազեցնելու համար
Ի՞նչ է ICAReducer-ը: ICAReducer-ն աշխատում է հետևյալ կերպ. այն նվազեցնում է նրանց միջև բարձր փոխկապակցված հատկանիշները մինչև մեկ սյունակ: Բավականին նման է PCAreducer-ին, չնայած այն..