2016-11-16 4 views
0

Herr X mag nur einen Beitrag von Herrn YRuby on Rails: Beziehung mit „has_many“

Wie kann ich eine Beziehung zwischen Herrn X und Herr Y den Herrn Y Beiträge zu sehen? (Sehen Sie die vorgeschlagenen Beiträge)

user.rb

has_many :posts 
    has_many :liked_posts, through: :liked, source: :post 

post.rb

def liked_by?(user) 
    likes.where(user: user).any? 
    end 

likes.rb

# id   :integer   not null, primary key 
# user_id :integer   not null 
# like_id :integer   not null 

Soll ich uniq benutzen?

Antwort

0

Ich bin nicht 100% sicher, wenn Sie dies bedeuten, aber falls Sie User mit Post durch Like dann beziehen vorgehen:

user.rb

has_many :posts 
has_many :likes 
has_many :liked_posts, through: :likes 

post.rb

has_many :likes 

def liked_by?(user) 
    self.likes.where(user: user).any? 
end 

likes.rb

belongs_to :user 
belongs_to :post 

Sie würden die entsprechenden Datenbankmigrationen hinzufügen müssen die Attribute likes

+0

Nein hinzufügen ... Ich habe eine neue Beziehung zwischen Herrn X und Herr Y. erstellen möchten zum Beispiel (auf dem Herrn zu sehen X "Dashboard", die anderen Posts von Mr. Y) – Kevin77

+0

Du könntest eine 'Freunde'-Beziehung one_to_many haben, so kannst du im X-Dashboard auf Y-Posts zugreifen, wenn sie Freunde sind:' x.friends.find (user : y) .posts' – alexunger

+0

da 'user has_many posts', sollte das spätere Snippet funktionieren, sobald Sie die Beziehung festgelegt haben. – alexunger

Verwandte Themen