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)
并获得用户喜欢的一系列文章.
合理?
我觉得这需要一个:通过参数在我的模型中,但我还没有掌握它,并且不知道它是否合适.
Account.find_by_user_name('ajik')=> nil
Account.find_all_by_user_name('ajik')=> []
当不匹配时,用于返回一条记录的方法返回nil.那些意味着返回许多记录的东西会返回一个空集合.