2016-09-01 4 views
0

Könnte mir jemand helfen, herauszufinden, wie man default_scope überschreiben kann.Überschreiben des default_scope

Meiner Ansicht nach muss ich alle matches zeigen, nicht nur { where("match_date >= now()") } Ich muss alle Übereinstimmungen anzeigen. Ich habe einige Rücksichten, um default_scope zu verwenden. Ich bin sehr neu in Rails. Ich habe versucht, scoped zu verwenden, aber es hat nicht geholfen oder ich habe es nicht richtig benutzt. Irgendwelche Vorschläge? Vielen Dank!

class Reservation < ActiveRecord::Base 
    belongs_to :bar_match 
end 

class BarMatch < ActiveRecord::Base 
    belongs_to :bar 
    belongs_to :match 
    has_many :reservations 
end 

class Match < ActiveRecord::Base 
    has_many :bars, through: :bar_matches 
    has_many :bar_matches, dependent: :destroy 
    default_scope { where("match_date >= now()") } 
end 

-Controller

@reservations = Reservation.where(user_id: current_user.id) 

Ansicht

- @reservations.each do |reservation| 
    = reservation.bar_match.match 

Antwort

1

Sie unscoped Methode können

Match.all   #=> SELECT * FROM matches WHERE match_date >= now() 
Match.unscoped.all #=> SELECT * FROM matches 

EDIT:

versuchen, einen neuen Rahmen hinzufügen und es

class BarMatch < ActiveRecord::Base 
    #... 
    belongs_to :unscoped_match, -> { unscoped }, foreign_key: :match_id, class_name: "Match" 
end 

Verwenden Sie es im Hinblick

reservation.bar_match.unscoped_match 
+0

Aber wie kann ich in meinem Fall implementieren. Ich kann etwas wie @ reservations.each do | reservation | nicht machen = reservation.bar_match.match.unscoped.all –

+0

Kann ich irgendwie scoped in Sicht verwenden? –

+0

Überprüfen Sie die aktualisierte Antwort –

1

Dieses Juwel in Ihrem Gemfle

gem 'unscoped_associations' 

dann verwenden

https://github.com/markets/unscoped_associations

oder Sie können:

class BarMatch < ActiveRecord::Base 
    def match 
    Match.unscoped { super } 
    end 
end 
+0

Das ist, was ich gesucht habe. Arbeitet groß. Danke Igor. –

Verwandte Themen