Я изучаю рельсы, и я пытаюсь выяснить ассоциации баз данных. Если у меня есть таблица базы данных, в которой указаны пользователи, у которых есть идентификатор, имя, адрес электронной почты и т. Д., А также таблица сообщений с сообщением, отправитель (Пользователь) и получатель (также Пользователь), как мне настроить миграцию и моделей. Здесь я использую Rails 3.1. Я уверен, что могу сделать это только с одним пользователем в таблице сообщений со ссылками: Пользователь в миграции, но я не уверен, как настроить два из них.Rails Database Association/Migration
ответ
Некоторые ресурсы, чтобы вы начали: Rails Tutorial: User ModelRoR Guides: Migrations
Сначала сделайте миграцию пользователей
$ rails generate model User name:string email:string
Тогда ваши сообщения миграции
$ rails generate model Message message:string user_id:integer
Тогда в модели Messages (/ приложение/модели /messages.rb)
belongs_to :user
И в модели пользователя (/app/models/users.rb)
has_many :microposts
Очевидно, что это грубый набросок того, что должно произойти, но это должно вам начать!
По какой-то причине я не могу добавить свой комментарий под ваш, но сделанный вами комментарий не меняет моего ответа. Читая немного из ссылок, которые я опубликовал, действительно поможет вам понять, что происходит, я думаю. –
Спасибо, это книга, которую я использую, чтобы разобраться. У меня есть миграция прямо сейчас, а модель сообщения с двумя: принадлежит_то строкам ... '' принадлежит_to: отправитель,: class_name => «Пользователь»,: foreign_key => «sender_id» принадлежит_to: recipient,: class_name => «Пользователь»,: foreign_key => «recipient_id» ' Теперь я не уверен, что следует делать в модели User. Кажется, что для отправки должны быть две строки «has_many», одна для приема, но я точно не знаю, как их указать. Мысли? – slabounty
ОК, вот что я закончил (извиняюсь заранее за то, что я ожидаю от форматирования f'd ... – slabounty
ОК, вот что у меня получилось.
Первая миграция ...
class CreateMessage < ActiveRecord::Migration
def change
create_table :messages do |t|
t.string :greeting
t.integer :sender_id
t.integer :recipient_id
t.timestamps
end
end
end
Далее в модели Message ...
# Message model
belongs_to :sender, :class_name => "User", :foreign_key => "sender_id"
belongs_to :recipient, :class_name => "User", :foreign_key => "recipient_id"
и в модели пользователя ...
# Message model
belongs_to :sender, :class_name => "User", :foreign_key => "sender_id"
belongs_to :recipient, :class_name => "User", :foreign_key => "recipient_id"
- 1. rails test database cloning dev database
- 2. Rails Complex Database Relationships
- 3. rails update database schema
- 4. Rails database undefined nil
- 5. Rails update old database
- 6. Rails database calls (.save/.destroy)
- 7. Rails Arrays, Database и Form
- 8. Rails Database Schema: Обмен отчетами
- 9. Rails - Database Перевод статических значений
- 10. Rails Database Вложенный поиск Confusion
- 11. Java/Groovy Rails Database Миграции
- 12. Ruby on Rails + Filemaker Database
- 13. Rails Row-Based Database, Огромное количество запросов
- 14. Rails Database Entry, Значения - все вопросительные знаки
- 15. Rails Database seeds.rb «помнит» старые данные
- 16. Rails scaffold form not update database
- 17. Ruby on Rails с Mongo DataBase
- 18. Ruby on Rails Locking Sqlite Database
- 19. Rails Полиморфной модель 1 Database Record
- 20. Rails Database design and multiple subdomain
- 21. Ruby on Rails HABTM collection_select Database Call
- 22. Ruby on rails database schema help
- 23. Ruby Rails Database Relationships - один для многих
- 24. Rails 3.2 ActiveRecord Database Field Issue
- 25. Rails database change boolean in true
- 26. rails test database не будет протирать
- 27. Сохранение подписи Pad JSON in Rails Database
- 28. Ruby on Rails Database Association Форма
- 29. Rails legacy database connection, вручную определить столбцы
- 30. Содержимое Raw Database, отображаемое в Rails View
ОК, это выглядит как в моей модели, я хочу что-то вроде: 'class Message принадлежит_to: sender, class_name => Пользователь принадлежит_to: recipient, class_name => Пользователь end' , но я до сих пор не уверен, что я бы поставил в процессе миграции, чтобы получить столбцы sender_id и recipient_id. – slabounty