actes_as_favoritor este un Rubygem care permite oricarui model ActiveRecord sa asocieze orice alt model, inclusiv optiunea pentru mai multe relatii per asociere cu scopuri.

Esti capabil sa diferentiezi adepti, favoriti, observatori, voturi si orice altceva iti poti imagina printr-o singura relatie. Acest lucru este realizat printr-o dubla relatie polimorfa pe modelul Favorite. Exista, de asemenea, suport pentru blocarea / deblocarea inregistrarilor favorite, precum si pentru stocarea in cache.

Acest articol Medium ofera o buna introducere a acestei bijuterii.

Instalare

Puteti adauga actes_as_favoritor la fisierul dvs. Gem cu:

Si apoi fugiti:

Sau instalati-l singur ca:

$ gem install actes_as_favoritor

Daca doriti intotdeauna sa fiti la curent, preluati cele mai recente de la GitHub in Gemfile:

bijuterie ‘actes_as_favoritor’, github: ‘jonhue / actes_as_favoritor’

Acum rulati generatorul:

$ rails g actes_as_favoritor

Pentru a incheia lucrurile, migrati modificarile in baza de date:

Utilizare

Infiintat

Adaugati acte_as_favorabile la modelele pe care doriti sa le puteti favoriza:

clasa Utilizator <ActiveRecord :: Base actes_as_favoritable end class Book <ActiveRecord :: Base actes_as_favoritable end

Specificati ce modele pot prefera alte modele adaugand acte_as_favoritor:

clasa Utilizator <ActiveRecord :: Base actes_as_favoritor end

metode act_as_favoritor

book = Book.find (1) user = User.find (1) # „user` favorite` book`. user.favorite (carte) # „user` elimina` book` din favorite. user.unfavorite (carte) # Daca „utilizator” a marcat „carte” ca preferata. user.favorited? (book) # Returneaza o relatie de inregistrare activa a inregistrarilor „Favorite“ ale utilizatorului care nu au fost blocate. user.all_favorites # Returneaza o matrice de toate obiectele preferate deblocate ale „utilizatorului”. Aceasta poate fi o colectie de diferite tipuri de obiecte, de exemplu: „Utilizator”, „Carte”. user.all_favorited # Returneaza o relatie de inregistrare activa a inregistrarilor „Favorite” unde „favoritable_type” este „Book”. user.favorites_by_type (‘Book’) # Returneaza o relatie de inregistrare activa a tuturor obiectelor preferate din „user” unde „favitable_type” este „Book”. user.favorited_by_type (‘Carte’) # Returneaza exact acelasi lucru ca ‘user.favorited_by_type (‘ User ‘)’. user.favorited_users # Daca „user` a fost blocat de` book`. user.blocked_by? (book) # Returneaza o serie de toate favoritables care au blocat `user`. user.blocked_by

acte_cum_metode favorabile

# Returneaza toti favoritorii unui model care „actes_as_favoritable` book.favoritors # Returneaza o relatie de inregistrare activa a inregistrarilor cu tipul„ User` dupa „book`. book.favoritors_by_type („Utilizator”) # Returneaza exact acelasi lucru ca „book.favoritors_by_type („ Utilizator ”)„. book.user_favoritors # Daca „book` a fost preferat de„ user`. book.favorited_by? (user) # Block a favoritor book.block (user) # Deblocati un favoritor book.unblock (user) # Daca „book` a blocat„ user` ca favoritor. book.blocked? (utilizator) # Returneaza o serie de toti favoritorii blocati. carte.blocat

Modelul preferat

# Returneaza o relatie de inregistrare activa a tuturor inregistrarilor `Favorite` unde„ blocat ”este„ fals ”. Favorite.unblocked # Returneaza o relatie de inregistrare activa a tuturor inregistrarilor „Favorite” unde „blocat” este „adevarat”. Favorite.

corridas de viejas incestos lesbicos
porno rural travestis españolas
abuela caliente maduras a cuatro patas
videos de travestis en español sexso
pilladas sin bragas se la chupa mientras duerme
follando con las vecinas porno gratis abuelos
porno violada videos porno xxx incesto
maduras sensuales tragando semen xxx
meadas gay jovencitos follando con maduras
folladas en la cocina xxporn
come pollas padre se folla a su hija
cincuentona española follando lesbianas maduras españolas
orgasmosxxx porno guey
vecinas cachondas shakira follando
intercambio de parejas en español sexo guarro
monjas folladoras maduras enculadas
abuelas a cuatro patas viejas feas
hentai scat sexo gratis incesto
sexporn putas en vic
tetas espectaculares descargar peliculas porno español

blocked # Returneaza o relatie de inregistrare activa a tuturor favoritelor utilizatorului, inclusiv a celor care au fost blocate. Favorite.for_favoritor (utilizator) # Returneaza o relatie de inregistrare activa a tuturor favoritorilor de „carte”, inclusiv a celor care au fost blocati. Favorite.for_favoritable (carte)

Domenii de aplicare

Utilizarea scopurilor cu actes_as_favoritor va permite sa urmariti, sa urmariti, sa preferati […] intre oricare dintre modelele dvs. In acest fel, puteti separa functionalitati distincte in aplicatia dvs. intre statele utilizatorului. De exemplu: un utilizator isi vede toate cartile preferate intr-un tablou de bord („preferat”), dar primeste notificari numai pentru acestea, le urmareste („urmareste”). La fel ca YouTube sau GitHub. Optiunile sunt nelimitate. De asemenea, ati putea integra un sistem de vot / stea similar cu YouTube sau GitHub

In mod implicit, toate favoritele dvs. sunt definite ca „favorite”.

Puteti crea noi scopuri din mers. Fiecare metoda are in vedere domeniul de aplicare / domeniile ca optiune care expexteaza un simbol sau o serie de simboluri care contin domeniile dvs. de aplicare.

Deci, sa vedem cum functioneaza acest lucru:

user.favorite (carte, scopuri: [: favorit,: vizionare]) user.unfavorite (carte, domeniu:: vizionare) user_secund = User.find (2) user.favorite (utilizator_secund, scop:: urmeaza)

Este simplu!

Cand apelati o metoda care returneaza ceva in timp ce specificati mai multe domenii, metoda returneaza rezultatele intr-un hash cu domeniile ca chei atunci cand domeniile sunt date ca matrice:

utilizator.favorizat? (carte, scopuri: [: favorit,: vizionare]) # => {favorit: adevarat, vizionare: fals} utilizator preferat? (carte, scopuri: [: favorit]) # => {favorit: adevarat } user.favorited? (carte, scop:: favorite) # => adevarat

actes_as_favoritor ofera, de asemenea, cateva scopuri utile pentru a apela la modelul Favorite:

# Returneaza toate inregistrarile `Favorite` unde` scope` este `my_scope` Favorite.send („ # {my_scope} _list ”) ## Exemple ### Returneaza toate inregistrarile` Favorite` unde `scope` este„ favorites` Favorite.favorite_list ### Returneaza toate inregistrarile `Favorite` unde„ scope ”este„ vizionarea` Favorite.watching_list

Caching

Cand setati optiunea cache din config / initializers / actes_as_favoritor.rb la adevarat, puteti ascunde cantitatea de favorite / favoritables pe care o instanta le are in ceea ce priveste domeniul de aplicare.

Pentru aceasta trebuie sa adaugati cateva coloane de baze de date:

acte_cum_favoritor

add_column: utilizatori,: favoritor_score,: text add_column: utilizatori,: favoritor_total,: text

acte_ ca_favorabile

add_column: utilizatori,: favoritable_score,: text add_column: utilizatori,: favoritable_total,: text add_column: carti,: favoritable_score,: text add_column: carti,: favoritable_total,: text

Cache-urile sunt stocate ca hash-uri cu scopuri ca chei:

user.favoritor_score # => {favorite: 1} user.favoritor_total # => {favorite: 1, vizionare: 1} second_user.favoritable_score # => {follow: 1} book.favoritable_score # => {favorite: 1}

Nota: sunt incluse doar domeniile care au favorite.

actes_as_favoritor faciliteaza si mai mult accesarea valorilor cache:

user.favoritor_favorite_cache # => 1 second_user.favoritable_follow_cache # => 1 carte.favoritable_favorite_cache # => 1

Nota: Aceste metode sunt disponibile pentru fiecare domeniu pe care il utilizati.

Totalul conteaza toate favoritele inregistrate, in timp ce factorii de scor din favoritele care au fost eliminate. In majoritatea cazurilor de utilizare, scorul este cel mai util.

Configurare

Puteti configura actes_as_favoritor trecand un bloc pentru configurare. Acest lucru se poate face in config / initializers / actes_as_favoritor.rb:

ActsAsFavoritor.configure do | config | config.default_scope =: follow end

default_scope Specificati domeniul de aplicare implicit. Ia un sir. Implicit la: favorit. Aflati mai multe despre domenii aici.

cache Daca acte_as_favoritor foloseste cache-ul sau nu. Ia un boolean. Implicit la false. Aflati mai multe despre cache aici.

Dezvoltare

Pentru a incepe dezvoltarea trebuie mai intai sa bifurcati acest depozit si sa clonati local furca.

Instalati dependentele de proiecte executand:

Testarea

Testele sunt scrise cu RSpec si pot fi gasite in / spec.

Pentru a rula teste:

Pentru a rula RuboCop:

Contribuind

Salutam cu caldura pe toti cei care sunt interesati sa contribuie. Va rugam sa consultati ghidurile noastre de contributie si Codul nostru de conduita.

Lansari

Aici puteti gasi detalii despre toate versiunile anterioare. Modificarile de rupere inedite care se afla pe masterul actual pot fi gasite aici.

actes_as_favoritor urmeaza Semantic Versioning 2.0 asa cum este definit la http://semver.org. Consultati politica noastra de securitate.

Editura

  1. Examinati modificarile si deprecierile de rupere din CHANGELOG.md.
  2. Schimbati versiunea gem in lib / actes_as_favoritor / version.rb.
  3. Resetati CHANGELOG.md.
  4. Creati o cerere de extragere pentru a imbina modificarile in master.
  5. Dupa ce cererea de extragere a fost fuzionata, creati o noua versiune care sa enumere modificarile de ultima ora si sa se angajeze la master de la ultima versiune.
  6. Fluxul de lucru de lansare va publica bijuteria pe RubyGems.