Sono nuovo di ROR e sto cercando di capire gli ambiti. Nella mia attuale implementazione sto ricevendo tutti i processori e mostrandoli nella vista.Come utilizzare gli ambiti per unire più tabelle
class ProcessorsController
def index
@processors = Processor.all
end
end
Voglio modificare questo modo che io possa ottenere solo i processori in cui l'utente è admin. Ecco come vengono stabilite le mie relazioni.
class Processor
belongs_to :feed
#SCOPES (what I have done so far)
scope :feed, joins(:feed)
scope :groups, joins(:feed => :groups).join(:user).where(:admin => true)
end
class Feed < ActiveRecord::Base
has_and_belongs_to_many :groups
end
class Group < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :groups
scope :admin, where(:admin => true)
end
sono stato in grado di fare questo nel mio leva
pry(main)> Processor.find(63).feed.groups.first.user.admin?
PS: qualcuno potrebbe fornire alcune buone risorse in cui ho potuto imparare a utilizzare gli ambiti se le relazioni sono complesse.
Grazie mille. Sì, ho fatto approfondire quel documento, ma non ho notato l'uso di più join. –
La tua risposta mi ha davvero illustrato su come utilizzare i join all'interno degli ambiti. È lo stesso. È sufficiente "omettere" la parte Nome modello prima di chiamare il metodo. – Francisco