Rails:ActiveRecord Association返回nil关系

时间:2015-09-11 00:19:13

标签: ruby-on-rails ruby

我试图在博客上打印所有评论及其相关用户的帖子。注释将传递到视图中,并且可以访问其users_id和posts_id,但我无法访问其用户; comment.user返回nil。

型号:

class Comment < ActiveRecord::Base
  belongs_to :user
  belongs_to :post
end

迁移:

class CreateComments < ActiveRecord::Migration
  def change
    create_table :comments do |t|
      t.string :text
      t.references :users
      t.references :posts
      t.timestamps
    end
  end
end

在控制器中:

@post = Post.find(params[:id])
@comments = Comment.where(posts_id: params[:id]).order(:created_at)

在视图中:

<% @comments.each do |c| %>
  <% c.user.nil? %>
    <p><%=c.text%></p>
    <p><%=c.users_id%></p>
    <p><%=c.posts_id%></p>
  <% else %>
    <p><%=c.text%></p>
    <p><%=c.user.name%></p> #Here is where things would break if I didn't check "c.user.nil?"
  <% end %>
<% end %>

评论的文本和ID按预期打印,但用户仍被视为零。有谁知道如何从视图中的评论模型中访问用户?

1 个答案:

答案 0 :(得分:1)

我认为问题是数据库中外键列的名称。在明确声明外键(可以执行此操作)时声明post关联时,它将在模型上查找post_id。因此,您应该将数据库中的列更改为post_id,或将关联方法调用更改为:

belongs_to :post, foreign_key: :posts_id