在has_many关系中提取子对象的id

Ada*_*NYC 3 activerecord ruby-on-rails

我有User模特,哪个has_many帖子.我想查询用户的帖子列表.但是,以下返回post对象数组而不是justid

@user.posts
Run Code Online (Sandbox Code Playgroud)

什么是ActiveRecord获取id的方法?我知道我可以使用

@user.posts.map{|u| u.id}
Run Code Online (Sandbox Code Playgroud)

但我认为这是低效的(返回post对象数组,然后提取ID)和冗长.

Mis*_*cha 7

最好的方法是使用:

@user.post_ids
Run Code Online (Sandbox Code Playgroud)

  • 我认为AR是dinamically定义方法(通过`class_eval`)而不是使用method_missing.请参阅:https://github.com/rails/rails/blob/master/activerecord/lib/active_record/associations/builder/collection_association.rb#L72 (2认同)