如何正确声明我的个人资料和评论模型之间的关联?

时间:2013-12-10 12:26:41

标签: ruby-on-rails rails-activerecord

我想知道我是否正确声明了我的个人资料和评论模块之间的关联,以便我可以在他们刚为自己和所有其他用户看到的评论上方显示当前用户的个人资料图片。< / p>

我有个人资料模型:

class Profile < ActiveRecord::Base
   attr_accessible :address, :firstname, :lastname, :mobile , :user_id, :photo
   attr_accessor :image_file_name, :image_content_type, :image_file_size, :image_updated_at

   has_attached_file :photo

   validates_attachment_presence :photo
   validates_attachment_size :photo, :less_than => 5.megabytes
   validates_attachment_content_type :photo, :content_type => ['image/jpeg', 'image/png']

   belongs_to :user
   has_many :comments
   has_many :post
end

我有一个评论模型:

 class Comment < ActiveRecord::Base
     belongs_to :post
     belongs_to :profile
     attr_accessible :body, :commenter, :photo
 end

如上所示,个人资料模型也属于用户,每个评论都属于(博客)帖子。

我想让当前用户的照片(或个人资料图片)显示在用户创建的评论旁边。目前,我只有在创建评论时允许用户输入“名称”的功能。

有人能引导我朝着正确的方向前进吗?这也是一个常见的问题,它叫什么?

如果您需要我发布更多代码,请告诉我。

1 个答案:

答案 0 :(得分:0)

假设您已经创建了正确的数据库迁移,那么您复制的关联似乎是正确的

另外,当您创建评论时,您已将帖子和个人资料正确附加到您应该能够测试的评论记录中。

假设您有一个包含当前帖子的@post变量

@post.comments.each do |comment|
  # to get the photo object
  # you may need to call photo_url depending on the gem you used
  comment.profile.photo

  # then to get the name 
  comment.profile.firstname
  comment.profile.lastname

  # or from the user object
  comment.profile.user.name
end

如果您需要从用户模型中获取详细信息,您应该考虑添加`belongs_to:user,through :: profile'关系。但请仔细检查该语法。

你可以这样

comment.user.name
# instead of
comment.profile.user.name