如何从另一个模型实例中查找关联的模型实例

时间:2011-12-20 08:32:02

标签: ruby-on-rails

class Post < ActiveRecord::Base
  has_many :comments
end

class Comment < ActiveRecord::Base
  belongs_to :post
end

post = Post.new
post.comments.build(:title=>'title1')

comment1 = post.comments.first

如果我只得到评论1,我怎么知道评论1关联发帖,帖子类是“发布”

2 个答案:

答案 0 :(得分:0)

这由foreign_key确定。评论表中(应该)post_id。您可以使用comment1.post来获取相关的Post对象。

答案 1 :(得分:0)

您可以通过comment.post访问帖子。关联的对象将始终为类Post,因为您定义了类似的关系。无论如何,如果您想知道对象具有哪个类,您可以使用object.class来获取类,并且可以使用object.kind_of? ClassName来验证对象是否为ClassName

//如果您需要所有者,则需要在Comment模型中添加user_id字段并为其添加关联:

注释:

belongs_to :user

用户:

has_many :comments

然后你可以说:

comment.user #This will return the owner of the comment

创建评论时,您需要关联当前登录的用户,以便知道是谁创建的!