Я изучаю рельсы, и я пытаюсь выяснить ассоциации баз данных. Если у меня есть таблица базы данных, в которой указаны пользователи, у которых есть идентификатор, имя, адрес электронной почты и т. Д., А также таблица сообщений с сообщением, отправитель (Пользователь) и получатель (также Пользователь), как мне настроить миграцию и моделей. Здесь я использую 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"
ОК, это выглядит как в моей модели, я хочу что-то вроде: 'class Message принадлежит_to: sender, class_name => Пользователь принадлежит_to: recipient, class_name => Пользователь end' , но я до сих пор не уверен, что я бы поставил в процессе миграции, чтобы получить столбцы sender_id и recipient_id. – slabounty