Rails Console find users by array of ids

前端 未结 6 1487
清歌不尽
清歌不尽 2020-12-23 19:25

So I have an array of user ids. Is there a way in rails console to query all of these user\'s with the array

something like

ids = [1, 2, 3, 4]

users         


        
6条回答
  •  一个人的身影
    2020-12-23 19:42

    For an array, you can use one of these:

    # Will raise exception if any value not found
    User.find( [1,3,5] )
    
    # Will not raise an exception
    User.find_all_by_id( [1,3,5] ) # Rails 3
    User.where(id: [1,3,5])        # Rails 4
    

    If you happen to be using a range, you can use these:

    # Will raise exception if any value not found
    User.find((1..4).to_a)   #same as User.find([1,2,3,4])
    
    # Will not raise an exception
    User.find_all_by_id(1..4)  # Rails 3
    User.where(id: 1..4)       # Rails 4
    

    As @diego.greyrobot notes in a comment, a range causes a SQL BETWEEN clause, whereas an array causes a SQL IN clause.

    Don't use User.find_by_id() -- It will only return one record, no matter how may IDs you pass in.

提交回复
热议问题