可以在视图中使用User.find吗?

时间:2013-11-08 08:03:10

标签: ruby-on-rails ruby

我有3个模特

  1. 用户
  2. 商业(使用acts_as_commentable gem的acts_as_commentable)
  3. 评论(属于用户)
  4. 在商家展示页面上,我会显示与该商家相关的所有评论:

    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
    

3 个答案:

答案 0 :(得分:3)

我相信你可以使用它:

<%= comment.user.name %>

Rails将为您处理加载。

答案 1 :(得分:1)

每条评论都属于一个用户。所以,你只需要以这种方式获得用户

comment.user.name

答案 2 :(得分:0)

我认为最好的方法是:

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

我看到你有validates :user_id, presence: trueuser。但是如果删除了该用途,则comment.user.name会出错。

或者您可以使用:

<%= comment.user.blank? ? "Visitor" : comment.user.name %>