Ich habe User
und Review
Modelle. Eine Überprüfung kann hat ein author
und ein subject
, die beide auf dem Hinweis ein User
:Wie wird diese assignes_to Verbindung in Rails/ActiveRecord eingerichtet?
class Review < ApplicationRecord
belongs_to :subject, class_name: 'User', optional: true
belongs_to :author, class_name: 'User', optional: true
end
class CreateReviews < ActiveRecord::Migration[5.0]
def change
create_table :reviews do |t|
t.references :subject
t.references :author
end
end
end
Dies funktioniert gut, und jetzt kann ich zwei separate User
Objekte das Review
Objekt zuweisen zu vertreten, die die Kritik gegen die schrieb.
Der Benutzer weiß jedoch nicht, wie viele Bewertungen er entweder als Thema oder der Autor zugeordnet ist. Ich fügte has_and_belongs_to_many :users
auf Bewertungen und umgekehrt hinzu, und obwohl machbar, ist nicht genau das, was ich will.
Wie richte ich die Verbände bis zu der Lage sein, folgendes zu tun:
review.author = some_other_user
review.subject = user2
another_review.author = some_other_user
another_review.subject = user2
user2.a_subject_in.count
#=> 2
user2.a_subject_in
#=> [#<Review>, #<Review>]
some_other_user.an_author_in.count
#=> 2
Genau das, was ich wollte, danke –