настройка таблицы соединений в Rails

#mysql #sql #ruby-on-rails

#mysql #sql #ruby-on-rails

Вопрос:

итак, я новичок в объединении таблиц. Я не уверен, что это даже то, что мне нужно. Это моя текущая настройка и ситуация: у меня есть 2 пользовательские модели.

 Company
User
  

Мне нужно создать таблицу, которая принадлежит модели компании, но может быть передана пользовательской моделью. У каждой компании может быть несколько приложений, поэтому я назвал свою 3-ю модель

 Application 
  

до сих пор я делал

 class Application < ActiveRecord::Base
 belongs_to :company
end
  

и

 Class Company < ActiveRecord::Base
  has_many :applications
end 
  

Я сразу создал модель приложения, выполнив:

 rails g model application
  

я уже допустил какие-то ошибки, или у меня пока все в порядке? и каковы следующие шаги здесь.

Комментарии:

1. Пока все в порядке. Следующим шагом будет чтение хорошего руководства, чтобы познакомиться с потоком приложений, с которым вы можете попробовать работать guides.rubyonrails.org и railstutorial.org/book для начала.

Ответ №1:

Пока кажется хорошим

Объединение таблиц

Существует два типа таблицы соединений — has_and_belongs_to_many amp; has_many :through

введите описание изображения здесь

Они делают то же самое (создают many-to-many связь), что означает, что вы можете вызывать @model.objects через join model

Судя по вашей информации, похоже, вы могли бы это сделать:

 #app/models/user.rb
Class User < ActiveRecord::Base
   has_many :applications
   has_many :companies, through: :applications
end

#app/models/application.rb
Class Application < ActiveRecord::Base
   #fields - id | user_id | company_id | etc | etc | created_at | updated_at
   belongs_to :company
   belongs_to :user
end

#app/models/company.rb
Class Company < ActiveRecord::Base
   has_many :applications
   has_many :users, through: :applications
end
  

Комментарии:

1. Я борюсь с тем, как структурировать свою базу данных. Пока я пришел, чтобы добавить company_id в сообщение. Но моя проблема заключается в следующем: у компании есть множество приложений. Они отправляют информацию, например, вопросы для интервью. Который затем будет отображаться в показе этого приложения для пользователей. Пользователи ответят на эти вопросы и отправят. Таким образом, приложения принадлежат компании, но им необходимо отслеживать идентификатор пользователя, который ответил на вопросы. Видимый компанией