我想知道我是否正确声明了我的个人资料和评论模块之间的关联,以便我可以在他们刚为自己和所有其他用户看到的评论上方显示当前用户的个人资料图片。< / 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
如上所示,个人资料模型也属于用户,每个评论都属于(博客)帖子。
我想让当前用户的照片(或个人资料图片)显示在用户创建的评论旁边。目前,我只有在创建评论时允许用户输入“名称”的功能。
有人能引导我朝着正确的方向前进吗?这也是一个常见的问题,它叫什么?
如果您需要我发布更多代码,请告诉我。
答案 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