Мне нужны некоторые предложения для модельных отношений, которые я собираюсь развить: я хочу создать исследовательскую таблицу, которая будет отслеживать все исследования, проводимые внутри платформы.На платформе, которую я разрабатываю, пользователь может искать других пользователей.Чтобы сделать это, я подумал создать 3 поля в таблице исследований: Исполнитель (идентификатор_пользователя, отправляющего исследование) Research_string (строка, которую отправляет исполнитель) и Результаты (это один или несколько пользователей).Конечно, взаимосвязь между таблицами пользователей и исследований будет много-многим, но обратите внимание, что в таблице исследований есть 2 разных столбца, которые включают user_id (исполнителя и результаты), так как я могу указать рельсы?Я подумал что-то вроде этого:
class User < ActiveRecord::Base
has_many :performed_research, :through => :research_table
class Research < ActiveRecord::Base
has_many :users
Но как мне указать, что пользователи has_many в таблицах исследований подразумевают два разных отношения в зависимости от столбца?Tnx
РЕДАКТИРОВАНИЕ: мое решение
Ваше решение неверно, поскольку пользователь выполняет только исследование, а не исследование, в котором он приводится.Я принял другое решение, что это не лучшее из ясного, но оно работает, я хотел бы, чтобы ваш судья:
class Research < ActiveRecord::Base
belongs_to :searcher, :class_name => 'User', :foreign_key=> 'submitter_id'
has_many :found_users, :through=>:user_researches,:source=>:user
#It is necessary to let the association work without class_name it would look for
userResearch class
has_many :user_researches, :class_name =>'User_research'
end
class User_research < ActiveRecord::Base
belongs_to :user
belongs_to :research
end
class User < ActiveRecord::Base
# It returns a list of research performed by the user
has_many :researches, :foreign_key => 'submitter_id'
# It is necessary to let the searcher relationship works
has_many :user_researches, :class_name =>'User_research'
#==> Searcher will return an Array of research where the user's skill has been researched
has_many :follower_researches, :through => :user_researches, :source=>:research
end
Я говорю, что это не лучшее, потому что follower_research пользовательской модели,показать массив исследований, когда он получил результаты ... а не Массив отправителя, который его ищет, поэтому, чтобы получить их, мне нужно прокрутить массив исследований, а затем взять поле поиска ... Можете ли вы выполнитьулучшение (надеюсь, менее сложное, чем это)