2010-10-27 108 views
4
class Comment < ActiveRecord::Base 
    belongs_to :post 
    belongs_to :user 
end 

因此,通过上述关联,我可以从给定的评论对象中获取用户和帖子的详细信息吗?
模型是否可以属于多个模型?

@comment.post.post_title and 
@comment.user.user_name. 

同时请注意,我用评论的帖子的嵌套的资源。

resources :posts do 
    resources :comments 
end 

回答

7

是的,你可以,你不需要指定外键或类名来这样做。说belongs_to :user意味着rails会在注释表中寻找一个user_id整型字段,并且期望一个名为User的ActiveRecord类存在。

添加尽可能多的,他们不会互相干扰。

+0

这是Rails 3的新功能吗?我当然必须在Rails 2.3.2中指定一个外键来完成这个工作,并且我最近升级到了Rails 3,所以我没有机会尝试这个。 – Samo 2010-10-27 19:29:21

+1

不,这不是新的,它可以回溯到1.2(我使用的最早版本)。一个模型可以有任意数量的关联(has_many,belongs_to等),它们不会相互影响。唯一需要指定class_name和foreign_key的时间是当它们与rails期望的不同时。 – 2010-10-27 19:38:32

+0

好吧,这是我的新闻,因为我知道我试过这个,直到我添加了类似于我引用的示例的代码时,它才起作用。也许这是一个子类/性病问题,我不记得了。 – Samo 2010-10-27 20:02:31

相关问题