0

我有 3 个模型

  1. 用户
  2. 业务(acts_as_commentable 使用acts_as_commentable gem)
  3. 评论(属于用户)

在业务展示页面上,我显示了与该业务相关的所有评论:

Name:<%= @business.name %>
<%= render @business.comments %>

部分评论

Comment: <%= comment.comment %><br >
By: <%= User.find(comment.user_id).name %>

有没有更好的方法来显示用户名而不是使用 User.find?

这是我的模型用户

class User < ActiveRecord::Base
  attr_accessible :email, :name
end

商业

class Business < ActiveRecord::Base
  attr_accessible :name, :category

  has_reputation :votes, source: :user, aggregated_by: :sum

  acts_as_commentable
end

评论

class Comment < ActiveRecord::Base

  include ActsAsCommentable::Comment

  attr_accessible :comment, :user_id

  belongs_to :commentable, :polymorphic => true

  default_scope :order => 'created_at ASC'

  belongs_to :user

  validates :user_id, presence: true
end
4

3 回答 3

3

我相信你可以使用这个:

<%= comment.user.name %>

Rails 将为您处理加载。

于 2013-11-08T08:05:21.987 回答
1

每个评论都属于一个用户。因此,您只需要以这种方式获取用户

comment.user.name
于 2013-11-08T08:05:35.967 回答
0

我认为最好的方法是:

<%= comment.user.try(:name) %>

我看你必须validates :user_id, presence: trueuser。但是如果使用时删除了,comment.user.name就会报错。

或者您可以使用:

<%= comment.user.blank? ? "Visitor" : comment.user.name %>
于 2013-11-08T08:19:42.730 回答