2017-02-04 8 views
-1

Benutzer haben viele Karten und Karten haben viele Benutzer, mit einer has_many durch Beziehung.Wenn Datensatz Benutzer hat?

# card.rb 
has_many :card_assignments 
has_many :users, :through => :card_assignments 

# user.rb 
has_many :card_assignments 
has_many :cards, :through => :card_assignments 

# card_assignment.rb 
belongs_to :user 
belongs_to :card 

Meiner Meinung nach möchte ich prüfen, ob der aktuelle Benutzer einer der Benutzer ist, der zur Karte gehört, wenn das Sinn macht?

+0

Sie nutzen könnten [ 'existiert?'] (Http://devdocs.io/rails~5.0/activerecord/findermethods#method-i-exists-3F), z.B '@ card.card_assigments.exists? (user_id: current_user.id)' oder 'current_user.card_assignments.exists? (card_id: @ card.id)'. Dies würde bei jeder Verwendung eine Datenbankabfrage durchführen. Je nachdem, wie viele Karten Sie überprüfen möchten, kann 'current_user.card_assignment_ids.include? (@ Card.id)' ebenfalls helfen (dies sollte die Datenbank zumindest automatisch zwischenspeichern) Abfrageergebnisse). –

Antwort

2

Diese den Trick tun sollten

if @card.user_ids.include?(current_user.id) 
Verwandte Themen