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 %>
它将始终包含帖子标题