2010-10-25 8 views
5

Tworzę stronę forum, na której każdy zarejestrowany użytkownik może napisać wiele postów, a każdy wpis może mieć wiele komentarzy.
Każdy użytkownik może również komentować posty utworzone przez dowolnego użytkownika.Szyny: Najlepszy model stowarzyszenia dla użytkowników -> wpisy -> model komentarzy na forum w rodzaju strony internetowej?

 has_many    has_many 
user ------------> Posts -------------- > Comments 
    |          ^
    |           | 
    |    has_many     | 
    |-------------------------------------------   
     belongs_to 
Post ------------> User 
^    ^
    |     | 
    |     | 
    belongs_to  belongs_to 
    |     | 
    |     | 
Comments------------- 

nie jestem w stanie uzyskać dane użytkownika z komentarzem za pomocą "post.comment.user" lub
commenter_email = comments.user.email
Jak to osiągnąć?
wklejając moje modele odniesienia: -

class Comment < ActiveRecord::Base 
belongs_to :post 
belongs_to :user 
end 
class Post < ActiveRecord::Base 
    has_many :comments, :dependent => :destroy 
end 
class User < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 
    attr_accessible :email, :password, :password_confirmation, :remember_me 
    has_many :posts 
    has_many :comments 
end 

Oto mój schematu: -

create_table "comments", :force => true do |t| 
t.integer "post_id" 
t.integer "user_id" 
t.text  "comment_text" 
t.datetime "created_at" 
t.datetime "updated_at" 
end 

create_table "posts", :force => true do |t| 
t.integer "user_id" 
t.integer "sell_or_buy" 
t.string "title" 
t.text  "body" 
t.datetime "created_at" 
t.datetime "updated_at" 
end 

create_table "users", :force => true do |t| 
t.string "email", 
t.string "encrypted_password", 
t.datetime "created_at" 
t.datetime "updated_at" 
end 

Używam Rails 3.0.1.
proszę zasugeruj swoje przemyślenia.

+0

Jak stworzyć komentarze? Kontroler? –

Odpowiedz

8

Ponieważ Twój post ma wiele komentarzy, więc jest post.comments zamiast post.comment

Od comments jest lista uwag, comments.user nie jest również ważna.

Musisz id komentarzu, tak, że można znaleźć użytkownika szczegółowego komentarza:

post.comments.find(params[:id]).user 

oczywiście, można również uzyskać wszystkich użytkowników:

post.comments.all.collect(&:user) 
Powiązane problemy