我试图在博客上打印所有评论及其相关用户的帖子。注释将传递到视图中,并且可以访问其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按预期打印,但用户仍被视为零。有谁知道如何从视图中的评论模型中访问用户?
答案 0 :(得分:1)
我认为问题是数据库中外键列的名称。在明确声明外键(可以执行此操作)时声明post
关联时,它将在模型上查找post_id
。因此,您应该将数据库中的列更改为post_id
,或将关联方法调用更改为:
belongs_to :post, foreign_key: :posts_id