我使用devise创建了一个用户模型。在评论模型中,我设置了评论belongs_to :user
。在用户模型中,我然后设置has_many: comments
关系。
评论模型
class Comment < ActiveRecord::Base
belongs_to :user
end
用户模型
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :comments
end
在评论控制器中,我有以下代码。
class CommentsController < ApplicationController
def create
@comment = Comment.new(params[:comment])
@comment.user = current_user
if @comment.save
end
end
......
end
在索引页面的视图中我在erb里面有这个代码,基本上是拉取用户的名字
<td><%= comment.user.first_name if comment.user %></td>
但它根本没有显示任何内容?
基本上我在数据库中有表,User表和Comment表。我想将User表中用户的id与评论表中的foreign_key
,user_id
相关联。
例如,我以用户id = 1的用户身份登录并创建了评论。当我查询数据库以检查注释时,user_id为nil
#<Comment id: 19, Ticker: "Hello", MyComment: "Test", created_at: "2014-06-07 20:07:44", updated_at: "2014-06-07 20:07:44", user_id: nil>
答案 0 :(得分:1)
我认为你应该有这个;
class CommentsController < ApplicationController
def create
@comment = Comment.new(params[:comment])
@comment.user_id = current_user.id
if @comment.save
end
end
......
end
然后成功调用它;
<td><%= comment.user.first_name if comment.user %></td>
这是因为@comment只包含用户引用。