Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 访问模型具有许多属性_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 访问模型具有许多属性

Ruby on rails 访问模型具有许多属性,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我有以下型号: Post.rb has_many :likes belongs_to :user Like.rb belongs_to :user belongs_to :post User.rb has_many :posts has_many :likes 我试图在视图中查询用户喜欢的内容,如下所示: <% @user.likes.each do |i| %> <%= i.post.title %> <% en

我有以下型号:

Post.rb 
   has_many :likes
   belongs_to :user

Like.rb
   belongs_to :user
   belongs_to :post

User.rb
   has_many :posts
   has_many :likes
我试图在视图中查询用户喜欢的内容,如下所示:

<% @user.likes.each do |i| %>
    <%= i.post.title %>
<% end %>
<% @user.likes.each do |i| %>
    <%= i.post %>
<% end %>
<% @user.likes.joins(:post).each do |i| %>

并且它为nil:NilClass返回未定义的方法“title”

我只能看到这样的帖子:

<% @user.likes.each do |i| %>
    <%= i.post.title %>
<% end %>
<% @user.likes.each do |i| %>
    <%= i.post %>
<% end %>
<% @user.likes.joins(:post).each do |i| %>

或者像这样

我不明白为什么我不能拿到“所有权”或任何其他财产


有什么帮助吗?

似乎至少有一个
@user.likes
没有相关的帖子。因此
像#post
一样返回
nil
,并且在
nil
对象上尝试调用
title
,这会引发错误。如果不希望出现这种情况,您可能必须验证Like,以便每个
Like
都有其
post

class Like < ActiveRecord::Base
  # ...
  validate :post, presence: true

似乎至少有一个
@user.likes
没有关联的帖子。因此
像#post
一样返回
nil
,并且在
nil
对象上尝试调用
title
,这会引发错误。如果不希望出现这种情况,您可能必须验证Like,以便每个
Like
都有其
post

class Like < ActiveRecord::Base
  # ...
  validate :post, presence: true

似乎至少有一个
@user.likes
没有关联的帖子。因此
像#post
一样返回
nil
,并且在
nil
对象上尝试调用
title
,这会引发错误。如果不希望出现这种情况,您可能必须验证Like,以便每个
Like
都有其
post

class Like < ActiveRecord::Base
  # ...
  validate :post, presence: true

似乎至少有一个
@user.likes
没有关联的帖子。因此
像#post
一样返回
nil
,并且在
nil
对象上尝试调用
title
,这会引发错误。如果不希望出现这种情况,您可能必须验证Like,以便每个
Like
都有其
post

class Like < ActiveRecord::Base
  # ...
  validate :post, presence: true

如果你的喜欢总是属于post,那么最好使用“through::posts”选项将用户与喜欢关联起来。在这种情况下,这是正确的关联方式

因此,您的代码如下所示:

Post.rb 
   has_many :likes
   belongs_to :user

Like.rb
   belongs_to :post

User.rb
   has_many :posts
   has_many :likes, through: :posts
然后,您可以通过以下方式访问用户的喜好:

<% @user.likes.each do |i| %>
  <%= i.post.title %>
<% end %>


它将始终包含帖子标题。

如果您喜欢的内容始终属于帖子,则最好使用“through::posts”选项与喜欢的内容建立用户关联。在这种情况下,这是正确的关联方式

因此,您的代码如下所示:

Post.rb 
   has_many :likes
   belongs_to :user

Like.rb
   belongs_to :post

User.rb
   has_many :posts
   has_many :likes, through: :posts
然后,您可以通过以下方式访问用户的喜好:

<% @user.likes.each do |i| %>
  <%= i.post.title %>
<% end %>


它将始终包含帖子标题。

如果您喜欢的内容始终属于帖子,则最好使用“through::posts”选项与喜欢的内容建立用户关联。在这种情况下,这是正确的关联方式

因此,您的代码如下所示:

Post.rb 
   has_many :likes
   belongs_to :user

Like.rb
   belongs_to :post

User.rb
   has_many :posts
   has_many :likes, through: :posts
然后,您可以通过以下方式访问用户的喜好:

<% @user.likes.each do |i| %>
  <%= i.post.title %>
<% end %>


它将始终包含帖子标题。

如果您喜欢的内容始终属于帖子,则最好使用“through::posts”选项与喜欢的内容建立用户关联。在这种情况下,这是正确的关联方式

因此,您的代码如下所示:

Post.rb 
   has_many :likes
   belongs_to :user

Like.rb
   belongs_to :post

User.rb
   has_many :posts
   has_many :likes, through: :posts
然后,您可以通过以下方式访问用户的喜好:

<% @user.likes.each do |i| %>
  <%= i.post.title %>
<% end %>

它将始终包含帖子标题