Мне трудно понять, как реализовать одиночное модели самостоятельного соединения в Rails.* 201 Руководство по ассоциациям ActiveRecord, раздел 2.10 *1002*, кратко объясняет самостоятельные объединения, но не предлагает достаточно информации, и каждый пример или публикация об этом, например, ссылается на пример Friendly Friend Railcast, который не является самостоятельным соединением моделикак описано в разделе 2.10 .
Руководство по рельсам. Идея - это модель, которая имеет has_many и самой собственной_самой, без отдельной таблицы для взаимосвязи.Единственная причина, по которой я вижу необходимость в отдельной таблице, заключается в том, что вы хотите, чтобы отношения содержали больше информации, чем просто отношения.например, "лучшие друзья", "едва знают их"
У меня есть простая схема сообщений:
create_table "posts", :force => true do |t|
t.datetime "posted"
t.string "nick"
t.string "title"
t.text "content"
t.integer "parent_post_id"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
parent_post_id - это самостоятельная ссылка на другие сообщения Post_id.Модель posts.rb имеет определенное отношение:
class Post < ActiveRecord::Base
has_many :replies, :class_name => "Post"
belongs_to :parent_post, :class_name => "Post",
:foreign_key => "parent_post_id"
end
В Controller или View я надеюсь, что смогу сделать что-то вроде этого:
@posts.each do |post|
...
@replies = post.replies
@replies.each do |reply|
...
end
end
Или найти сообщениеparent:
@parent_post = post.parent_post
Это может быть неправильное понимание синтаксиса.Так что заранее спасибо всем, кто может дать мне какой-то смысл.Я просмотрел все SO и посты в блогах, и никто не пробовал использовать единую модель самоссылочного метода самостоятельного соединения, описанную в Руководстве.
Баллы для тех, кто предлагает объяснения, которые не указывают на FriendlyПример друга, в котором используется отдельная таблица отношений.