#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 в сообщение. Но моя проблема заключается в следующем: у компании есть множество приложений. Они отправляют информацию, например, вопросы для интервью. Который затем будет отображаться в показе этого приложения для пользователей. Пользователи ответят на эти вопросы и отправят. Таким образом, приложения принадлежат компании, но им необходимо отслеживать идентификатор пользователя, который ответил на вопросы. Видимый компанией