0

Я работаю над простым приложением, которое позволяет пользователю писать сообщение (parent_post) и другой пользователь, чтобы ответить на это сообщение (child_post). Я использую Ancestry gem для отслеживания отношений между сообщениями. Ancestry - это жемчужина/плагин, который позволяет записывать записи модели в виде древовидной структуры (или иерархии). Он предоставляет все стандартные отношения древовидной структуры (родительский, корневой, дочерний, предки ...).Рельсы: проблема с модельной ассоциацией с использованием Ancestry Gem (Tree Structur Model)

База schema.rb приложения:

create_table "posts", :force => true do |t| 
    t.text  "title" 
    t.text  "content" 
    t.datetime "created_at",   :null => false 
    t.datetime "updated_at",   :null => false 
    t.integer "user_id" 
    t.string "ancestry" 
    end 

    create_table "users", :force => true do |t| 
    t.string "email",     :default => "", :null => false 
    t.string "encrypted_password",  :default => "", :null => false 
    t.string "reset_password_token" 
    t.datetime "reset_password_sent_at" 
    t.datetime "created_at",        :null => false 
    t.datetime "updated_at",        :null => false 
    t.string "name" 
    end 

Задача: Я хочу, чтобы отобразить информацию о авторе parent_post в шоу зрения child_post. С помощью родословной вы можете вызвать «родитель» и указать все столбцы внутри таблицы сообщений. сообщений таблицы (см выше) имеет столбец user_id, так что я могу назвать

@post.parent.user_id 

показать мне идентификатор пользователя, который работает. Но я хотел бы показать имя пользователя вместо user_id.

Конечно, user_id и имя пользователя (имя) связаны с подключенной таблицей пользователей (см. Schema.rb выше), но как я могу обратиться к ним здесь? @ post.parent.user_id.name не работает.

Модели:

class User < ActiveRecord::Base 
has_many :posts 
end 

class Post < ActiveRecord::Base 
has_ancestry 
belongs_to :user 
end 

Я еще совсем новичок в Rails и застрял здесь. Может быть, простое простое решение, которого я не вижу?

Благодарим вас за помощь!

ответ

0

Как насчет @ post.parent.user.name? Я рекомендую сделать этот метод на модели Post, а не на вашем представлении или контроллере. Назовите его @ post.original_poster_name или аналогичным.

+0

Отлично! Я знал это, просто. Гоша. Спасибо огромное! – YvonC

Смежные вопросы