기존 연결을 추가하려고하는 기능에 사용할 최상의 연결 및 새로운 모델을 결정하는 데 도움이 될지 궁금합니다. 이 앱을 통해 사용자는 다른 사용자가 답변 한 질문을 할 수 있습니다. 질문을 게시 할 때 사용자는 자신이 속한 Province를 나타내며 (질문은 특정 위치이기 때문에) 사용자는 질문에 대한 하나 이상의 범주도 선택합니다. 질문이 만든 후에 따라서, 나는 기능을 갖춘 사용자가 내가 (질문에 대한 답변) 일부 사용자 수 있도록하면된다 싶습니다 무엇이이 기능을 효율적으로 구현하기 위해 어떤 모델/연결을 사용해야합니까?
def show
@question = Question.find(params[:id])
puts @question.categories.first.id #id = 2 for Tourism, for example
puts @question.province_id #id = 6 for Ontario, for example
end
같은 카테고리 (선택 하나 개의 범주) 및 지역 정보를 얻을 수 있어요 프로필은 views/question/show 페이지 옆에 표시됩니다. 따라서 위의 예에 따르면 show 액션 질문에서 온타리오 주 관광 카테고리의 주요 사용자를 쿼리합니다.
아마도 수천 명의 사용자가 있지만 기능을 갖춘 소수의 사용자 풀만있을 것이라는 점을 감안할 때, 나는 그 정보를 사용자 모델에 저장하는 것이 가장 좋다고 생각하지는 않지만 어쩌면 아마도 주 사용자 프로필, 지방 (전문가 인 경우) 및 카테고리 (전문가 인 경우)에 연결되지만 '지방 및 카테고리'와 동시에 일치하는 경우에만 끌어 올려집니다 따라서 카테고리가 "Tourism"이고 주 (Province)가 "Ontario"인 featured_user는 질문이 "Tourism"범주와 "Ontario"지방에만있는 경우에만 끌어 올려집니다.
features_user 모델을 만들면 효율적으로 작동하도록 이러한 다른 모델로 어떤 열과 연관을 만들어야합니까? 그리고/또는 기존 모델에 무엇을 추가해야합니까? 나는 has_and_belongs_to_many 또는 has_many : through 또는 간단한 foreign 키를 사용하려고 노력해야하는지 잘 모르겠다. 나의 본능은 그것을해야 할 것보다 더 복잡하게 만드는 것이다.
오른쪽 지금
Province.rb
has_many :questions
Question.rb
belongs_to :province
has_many :categorizations
has_many :categories, through: :categorizations
Category.rb
has_many :categorizations
has_many :questions, through: :categorizations
Categorization
belongs_to :question, touch: true
belongs_to :category, touch: true
User.rb
has_many :questions #i.e. questions they've asked
has_many :answers #i.e. questions they've answered