2011-12-18 4 views
1

Я изучаю рельсы, и я пытаюсь выяснить ассоциации баз данных. Если у меня есть таблица базы данных, в которой указаны пользователи, у которых есть идентификатор, имя, адрес электронной почты и т. Д., А также таблица сообщений с сообщением, отправитель (Пользователь) и получатель (также Пользователь), как мне настроить миграцию и моделей. Здесь я использую Rails 3.1. Я уверен, что могу сделать это только с одним пользователем в таблице сообщений со ссылками: Пользователь в миграции, но я не уверен, как настроить два из них.Rails Database Association/Migration

+0

ОК, это выглядит как в моей модели, я хочу что-то вроде: 'class Message принадлежит_to: sender, class_name => Пользователь принадлежит_to: recipient, class_name => Пользователь end' , но я до сих пор не уверен, что я бы поставил в процессе миграции, чтобы получить столбцы sender_id и recipient_id. – slabounty

ответ

7

Некоторые ресурсы, чтобы вы начали: 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 

Очевидно, что это грубый набросок того, что должно произойти, но это должно вам начать!

+0

По какой-то причине я не могу добавить свой комментарий под ваш, но сделанный вами комментарий не меняет моего ответа. Читая немного из ссылок, которые я опубликовал, действительно поможет вам понять, что происходит, я думаю. –

+0

Спасибо, это книга, которую я использую, чтобы разобраться. У меня есть миграция прямо сейчас, а модель сообщения с двумя: принадлежит_то строкам ... '' принадлежит_to: отправитель,: class_name => «Пользователь»,: foreign_key => «sender_id» принадлежит_to: recipient,: class_name => «Пользователь»,: foreign_key => «recipient_id» ' Теперь я не уверен, что следует делать в модели User. Кажется, что для отправки должны быть две строки «has_many», одна для приема, но я точно не знаю, как их указать. Мысли? – slabounty

+0

ОК, вот что я закончил (извиняюсь заранее за то, что я ожидаю от форматирования f'd ... – slabounty

0

ОК, вот что у меня получилось.

Первая миграция ...

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" 
Смежные вопросы