Модель Rails принадлежит модели, которая принадлежит модели, но я хочу использовать другое имя - PullRequest
2 голосов
/ 16 апреля 2010

Это может быть глупый вопрос, но я только начинаю изучать Rail, поэтому я задаю этот вопрос.

У меня есть одна модель под названием «Пользователь», которая обрабатывает всех пользователей в моем сообществе. Теперь я хочу добавить гостевую книгу каждому пользователю. Поэтому я создал модель под названием «user_guestbook» и вставил ее в новую модель:

belongs_to :user

и это в пользовательской модели:

has_one :user_guestbook, :as => :guestbook

Следующим, что я сделал, было добавление новой модели для обработки сообщений в гостевой книге. Я назвал его "guestbook_posts" и добавил этот код в новую модель:

belongs_to :user_guestbook

И это в модели user_guestbook:

has_many :guestbook_posts, :as => :posts

То, чего я хотел достичь, - это возможность получать все сообщения для определенного пользователя:

@user = User.find(1)
puts @user.guestbook.posts

Но это не работает для меня. Я не знаю, что я делаю неправильно, и если есть какой-то более простой способ сделать это, пожалуйста, скажите мне об этом.

Просто чтобы заметить, я создал несколько миграций для этого следующим образом:

create_user_guestbook:

  t.integer :user_id

create_guestbook_posts:

  t.integer :guestbook_id
  t.integer :from_user
  t.string :post

Заранее спасибо!

1 Ответ

3 голосов
/ 16 апреля 2010

Я думаю, что это должно быть:

#user
has_one :guestbook, :class_name => "UserGuestbook"

#user_guestbook
belongs_to :user
has_many :posts, :class_name => "GuestbookPost"

#guestbook_posts
belongs_to :user_guestbook

Чтобы получить все сообщения, относящиеся к одному user, вы можете добавить эту строку в модель user

has_many :posts, :through => :guestbook

А потом, назовите это:

@user.posts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...