gpt4 book ai didi

ruby-on-rails - user ,评论关联不起作用,comment.user.email 返回无方法错误?

转载 作者:行者123 更新时间:2023-12-04 06:42:38 25 4
gpt4 key购买 nike

我有以下具有关联的模型,如下所示:-

class Comment < ActiveRecord::Base
belongs_to :post
belongs_to :user
end
class Post < ActiveRecord::Base
belongs_to :user
has_many :comments
end
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable

attr_accessible :email, :password, :password_confirmation, :remember_me
has_many :posts
has_many :comments
end

但是当我尝试访问评论的用户详细信息时,我没有得到任何方法错误:(。
浏览器中显示的错误如下:-
undefined method `email' for nil:NilClass


1: <p>
2: <% @post.comments.each do |comment| %>
3: <b>Comment written by:</b> <%= comment.user.email %><br />
4: <%= comment.body %><br />
5: <% end %>
6:

我的架构如下:-
create_table "comments", :force => true do |t|  
t.integer "post_id"
t.integer "user_id"
t.text "body"
.... truncated
end

create_table "posts", :force => true do |t|
t.integer "user_id"
t.integer "sell_or_buy"
t.string "title"
t.text "body"
.... truncated
end

create_table "users", :force => true do |t|
t.string "email", :default => "", :null => false
t.string "encrypted_password", :limit => 128, :default => "", :null => false
.... truncated
end

我的评论创建方法如下:-
class CommentsController < ApplicationController
def create
@post = Post.find(params[:post_id])
@comment = @post.comments.create(params[:comment])
@comment.user_id = current_user.id
redirect_to post_path(@post)
end
end

如您所见,我将 devise 用于用户模型。
知道我做错了什么吗?请帮帮我!
我正在使用 Rails 3.0.1

最佳答案

我相信您在分配 user_id 后没有保存@comment。您正在执行@comment.user_id = current_user.id,但此更改未反射(reflect)在数据库中。

你可以这样做:

def create
@post = Post.find(params[:post_id])
@comment = @post.comments.new(params[:comment])
@comment.user_id = current_user.id
@comment.save
redirect_to post_path(@post)
end

关于ruby-on-rails - user ,评论关联不起作用,comment.user.email 返回无方法错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4062074/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com