MiniRecord este o micro extensie pentru bijuteria ActiveRecord.

MiniRecord va va permite sa creati / edita / gestiona coloane, direct in dumneavoastra modelul .

Caracteristici

  • Definiti coloane / proprietati in interiorul modelului dvs.
  • Efectuati migrari automat
  • Actualizati automat schema
  • Adaugati, eliminati, modificati coloane
  • Adaugati, eliminati, modificati indexurile

Instructiuni

Ceea ce aveti nevoie este sa va mutati / eliminati db / schema.rb. Acest lucru evita conflictele.

Adaugati la fisierul dvs. Gem:

Pentru a bloca optional orice actiune distructiva din baza de date, creati un fisier config / initializers / mini_record.rb si adaugati:

MiniRecord.configure do | config | config.destructive = sfarsit fals

Asta e tot!

Exemple

Amintiti-va ca in interiorul proprietatilor puteti utiliza toate metodele de migrare, consultati documentatia

clasa Post <ActiveRecord :: Camp de baza: title_en,: title_jp camp: description_en,: description_jp, ca:: camp text: permalink, index: adevarat, limita: 50 camp: comentarii_count, ca:: camp intreg: categorie, ca: referinte, index: adevarat sfarsit Post.auto_upgrade!

In loc de camp puteti alege un alias: cheie, camp, proprietate, col

Daca optiunea: asa cum este omisa, minirecord va presupune ca este un: sir.

Amintiti-va ca, pentru ActiveRecord, puteti alege diferite tipuri:

: key_primar,: string,: text,: integer,: float,: decimal,: datetime,: timestamp,: time,: date,: binary,: boolean,: reference,: appartine_to,: timestamp

De asemenea, puteti oferi alte optiuni precum:

: limit,: implicit,: nul,: precizie,: scala # exemplu clasa Foo <ActiveRecord :: Camp de baza: titlu, implicit: “MyTitle” # ca:: sirul nu este necesar deoarece este un camp implicit: pret, ca : zecimal, scara: 8, precizie: 2 capat

Consultati ActiveRecord :: TableDefinition pentru mai multe detalii.

Efectuati upgrade-uri

In cele din urma, cand executati MyModel.auto_upgrade !, coloanele lipsa, indexurile si tabelele vor fi create din mers.

Indicii si coloanele prezente in db, dar nu in schema / definitia modelului dvs., vor fi sterse si din db.

Mostenirea cu o singura masa

MiniRecord ca suport STI pentru ActiveRecord:

clasa Pet <ActiveRecord :: Base; clasa finala Caine <Animal de companie; clasa de final Cat <Pet; end ActiveRecord :: Base.

pelis porno francesas sexo con cincuentonas
porno jovencitas españolas porno xxxxx
megacorridas follando abuelas
tangas xxx porno incesto italiano
porno suizo incesto italiano porno
follando a mi compañera de piso follada a traicion
porno flash chochitos jovenes
porno casero en españa españolas amater
orgias amateur realincest
videos culos follando en silencio
enanas porno maduras gordas desnudas
pajas de madres videos de sexo en español
porno con abuelas pollas peludas
sexo gratis hijo viola a su madre porno
parejas liberales españolas comic porno en español
pono gay venezolanas maduras
abuelas sexi videos gays argentinos
porno sin censura maduras sensuales
incesto lesbianas me gusta follar
putas vic buenas pajas

auto_upgrade!

Cand efectuati ActiveRecord :: Base.auto_upgrade !, va fi creat doar 1 tabel cu coloana de tip (indexata, de asemenea).

Relatii ActiveRecord

MiniRecord are suport incorporat pentru belong_to, asociatii polimorfe , precum si cu relatii habtm .

Nu trebuie sa faceti nimic in special, nici macar nu este necesar sa le definiti campul, deoarece acestea vor fi tratate automat.

apartine lui

clasa Adresa <ActiveRecord :: Baza apartine_to: end person

Va rezulta o coloana indexata person_id. Puteti utiliza una diferita utilizand optiunea foreign_key:

apartine_cum: persoana, cheie_straina:: persoana_pk

appartine_to cu cheie straina in baza de date

clasa Adresa <ActiveRecord :: Baza apartine_to: persoana index: persoana_id, strain: adevarat sfarsit

Acesta este acelasi exemplu, dar cheia straina va fi adaugata la baza de date cu ajutorul pietrei straine.

In acest caz aveti mai mult control (daca este necesar).

Pentru a elimina cheia, va rugam sa utilizati: strain => fals Daca eliminati simplu indexul, cheia straina nu va fi eliminata.

apartine_to (polimorf)

clasa Adresa <ActiveRecord :: Baza apartine_to: adresabila, polimorfa: final adevarat

Vor crea o adresa_identificabila si o coloana adresabila_tip cu indexuri compozite:

add_index (: adrese), [: addressable_id,: addressable_type]

habtm

clasa Adresa <ActiveRecord :: Base has_and_belongs_to_many: people end

Va genera un „adresa_persoana” (aka: tabel de alaturare) cu indexuri pe coloanele id

Adaugarea unei coloane noi

Super usor, deschideti modelul si adaugati-l doar:

clasa Post <ActiveRecord :: Camp de baza: camp de titlu: corp, ca:: text # << – acest camp: legatura permanenta, index: adevarat camp: comentarii_count, ca:: camp intreg: categorie, ca:: referinte, index: adevarat incheie Post.auto_upgrade!

Deci, acum, cand invocati MyModel.auto_upgrade! o diferenta intre schema veche si cea noua va detecta modificarile si va crea noua coloana.

Eliminarea unei coloane

Este exact la fel ca in exemplul anterior.

Redenumiti coloanele

Simpla adaugare a unei declaratii rename_field si mini_record va face o conexiune.rename_column in urmatorul auto_upgrade! dar numai daca db are coloana veche si nu coloana noua.

Acest lucru inseamna ca trebuie sa aveti in continuare o declaratie de camp pentru noul nume de coloana, astfel incat MyModel.auto_upgrade ulterior! nu va elimina coloana.

Sunteti liber sa lasati declaratia rename_field la loc sau o puteti elimina odata ce noua coloana exista in db.

Mutarea de la:

clasa Vehicul <ActiveRecord :: Campul de baza: sfarsitul culorii

La:

clasa Vehicul <ActiveRecord :: Camp redenumire baza: culoare, nume_nou:: corp culoare_camp: corp culoare_ sfarsit

Atunci poate mai tarziu:

clasa Vehicul <ActiveRecord :: Base rename_field: color, new_name:: body_color rename_field: body_color, new_name:: chassis_color field: chassis_color end

Schimbati tipul de coloane

In cazul in care, atunci cand redenumiti o coloana, sarcina ar trebui sa fie explicita, schimbarea tipului este implicita .

Asta inseamna ca daca ai

camp: total, ca:: intreg

si mai tarziu veti da seama ca ati vrut un plutitor

Va schimba automat tipul pentru prima data cand veti invoca auto_upgrade.

Adaugati / eliminati indexuri

In acelasi mod in care gestionam coloanele, MiniRecord va detecta noi indici si indici care trebuie eliminati.

Deci, cand efectuati MyModel.auto_upgrade! o comanda SQL ca:

PRAGMA index_info (‘index_people_on_name’) CREARE INDEX “index_people_on_surname” ON “people” (“prenume”)

Un indiciu rapid, uneori indexul devine prea detaliat / lung:

clasa Fox <ActiveRecord :: Camp de baza: foo, index: true camp: foo, index:: nume_camp personalizat camp: foo, index: [: foo,: bar] camp: foo, index: {coloana: [: branch_id,: party_id ], unique: true, name: ‘by_branch_party’} sfarsit

Aici este util add_index, astfel incat sa puteti rescrie cele de mai sus in:

clasa Fox <ActiveRecord :: Camp de baza: foo add_index: foo add_index: custom_name add_index [: foo,: bar] add_index [: branch_id,: party_id], unique: true, nume: ‘by_branch_party’ end

Suprimati indexurile implicite pentru asociatii

Daca nu aveti nevoie de indexul implicit pentru o relatie de apartenenta sau are_si_si apartine_multe, cum ar fi daca utilizati in schimb un index compozit, puteti sa-l suprimati sa fie creat (sau sa-l eliminati) folosind suppress_index in asociatie:

class Numar de telefon <ActiveRecord :: Camp de baza: pozitia ii apartine_to: persoana suppress_index: persoana add_index [: person_id,: position] end

Optiuni de trecere pentru a crea tabel

Daca trebuie sa transmiteti anumite optiuni instructiunii CREATE TABLE, puteti face acest lucru cu create_table in Model:

clasa Fox <ActiveRecord :: Base create_table: options => ‘MOTOR = InnoDB DEFAULT CHARSET = utf8 COLLATE = utf8_unicode_ci’ camp: foo end

Colaboratori

Multumiri speciale tuturor celor care au contribuit la acest proiect:

  • Dmitriy Partsyrniy
  • Steven Garcia
  • Carlo Bertini
  • Nate Wiger
  • Dan Watson
  • Guy Boertje
  • virtax
  • Nagy Bence
  • Takeshi Yabe
  • blahutka
  • 4r2r

Autor

DAddYE, poti sa ma urmaresti pe twitter @daddye sau sa arunci o privire pe site-ul meu daddye.it

Drepturi de autor

Copyright (C) 2011-2014 Davide D’Agostino – @daddye

Prin prezenta se acorda, gratuit, oricarei persoane care obtine o copie a acestui software si a fisierelor de documentare asociate („Software-ul”), pentru a tranzactiona in Software fara restrictii, inclusiv fara limitare, drepturile de utilizare, copiere, modificare, fuzionare , publica, distribuie, sublicentiaza si / sau vinde copii ale software-ului si permite persoanelor carora li se furnizeaza software-ul sa faca acest lucru, sub rezerva urmatoarelor conditii:

Notificarea privind drepturile de autor de mai sus si aceasta notificare privind permisiunea vor fi incluse in toate copiile sau partile substantiale ale software-ului.

SOFTWARE-UL ESTE FURNIZAT „CA ATARE”, FARA GARANTIE DE NICIUN TIP, EXPRESA SAU IMPLICITA, INCLUSIV DAR NU LIMITAT LA GARANTIILE DE VANZABILITATE, IDETIE PENTRU UN SCOP PARTICULAR SI NEINFRACTIONARE. In niciun caz, autorii nu vor fi raspunzatori pentru orice reclamatie, daune sau alta raspundere, indiferent daca intr-o actiune de contract, in caz contrar sau in alt mod, care decurge din, in afara sau in legatura cu software-ul sau cu utilizarea sau alte tranzactii din software.