Rails Ruby Array Nil && []

bot*_*bot 0 ruby arrays null ruby-on-rails ruby-on-rails-3

为什么某些查询返回带有[]和一些Nil的记录?

我试图找出为什么我运行如下语句:

user.articles # yields '[]' if the user has no articles
Run Code Online (Sandbox Code Playgroud)

但如果我写一个这样的声明:

user.likes # yields Nil if empty
Run Code Online (Sandbox Code Playgroud)

喜欢将是用户模型中的方法,看起来像这样:

def likes
    Likes.find_by_user_id(id)
end
Run Code Online (Sandbox Code Playgroud)

喜欢是一个包含user_id和article_id的连接表.

在我看来,我想做的是做出这些陈述:

user.likes.count
Run Code Online (Sandbox Code Playgroud)

实际上现在我想起来了,这样做会很棒:

@user.articles.likes 
Run Code Online (Sandbox Code Playgroud)

并获得用户喜欢的一系列文章.

合理?

我觉得这需要一个:通过参数在我的模型中,但我还没有掌握它,并且不知道它是否合适.

Vir*_*ual 6

Account.find_by_user_name('ajik')=> nil

Account.find_all_by_user_name('ajik')=> []

当不匹配时,用于返回一条记录的方法返回nil.那些意味着返回许多记录的东西会返回一个空集合.