3

ユーザーが回答した質問を定義するための多数のスルー リレーションシップがあります。

ユーザーが作成した質問の関係を設定するにはどうすればよいですか?

通常は、ユーザーと質問の間に has_many と belongs_to の関係を作成するだけですが、これで has_many も行っているため、うまくいきません。

これが私がこれまでに持っているものです:

モデル:

Users
Questions
Answered_questions

ユーザーモデル

has_many :answered_questions
has_many :questions, :through => :answered_questions

質問モデル:

has_many :answered_questions
has_many :users, :through => :answered_questions

Answered_questions モデル

belongs_to :question
belongs_to :user

編集

私はこの答えを見つけました: https://stackoverflow.com/a/12637532/756623、これを試すようになりました:

ユーザーモデルの追加:

has_many :questions_created, :class_name => "Question", :inverse_of => :created_by

質問モデルの追加:

belongs_to :created_by, :class_name => "User", :foreign_key => "created_by_id", :inverse_of => :questions_created 

また、列created_by_idを質問テーブルに追加しました

現在... は列 user_idに追加されていません。created_by_id

何が間違っていますか?

4

1 に答える 1

3

このようなことがあなたの問題を解決するかもしれないと思います:

# User
has_many :answered_questions
has_many :questions, :through => :answered_questions
has_many :created_questions, class_name: Question, foreign_key: :author_id

# Question
has_many :answered_questions
has_many :users, :through => :answered_questions
belongs_to :author, class_name: User

# Answered questions
belongs_to :question
belongs_to :user
于 2013-02-24T20:56:30.307 に答える