Как установить отношения между пользователем и всеми другими пользователями?
Я создаю свое первое Rails-приложение для изучения основ, и это простой сайт знакомств.
Я пытаюсь создать способ, которым пользователи будут общаться друг с другом. Процент совпадения будет определяться путем сравнения определенных атрибутов профиля пользователя. У каждого пользователя будет процент совпадений для каждого другого пользователя (аналогично OKCupid). Поэтому, когда пользователь создается (или обновляется), его совпадения генерируются вместе с ним.
Это моя идея, как это будет выглядеть до сих пор:
# scheme.rb
create_table "matchables", force: :cascade do |t|
t.integer "user_one_id"
t.integer "user_two_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["user_one_id"], name: "index_matchables_on_user_one_id"
t.index ["user_two_id"], name: "index_matchables_on_user_two_id"
t.index ["user_one_id", "user_two_id"],
name: "index_matchables_on_user_one_id_and_user_two_id",
unique: true
end
# matchable.rb
class Matchable < ApplicationRecord
belongs_to :user_one, class_name: "User"
belongs_to :user_two, class_name: "User"
validates :user_one_id, presence: true
validates :user_two_id, presence: true
def percent
# match percent method will go here
end
end
# user.rb
class User < ApplicationRecord
has_many :matchables,
class_name: "Matchable",
dependent: :destroy
has_many :matches, through: :matchable, source: :match
end
Часть, в которой я не уверен, это то, как пользовательская модель должна быть настроена с передачей внешнего ключа для сопоставимого. Как правильно это сделать? Любые предложения / советы приветствуются.