2009-08-06 30 views

Trả lời

10

Có tùy chọn :select về phương pháp tìm. Điều này cho phép bạn thực hiện:

User.find(:all, :select => 'id, name, username') 

Đối tượng quay trở lại sẽ User hợp với những thuộc tính có sẵn.

Hoặc nếu bạn thực sự chỉ muốn các giá trị mà không cần gói chúng chúng tôi là User trường hợp. Bạn có thể thêm phương thức vào User để trả lại phương thức.

def self.get_ids_and_names 
    self.connection.select_all("select id, name, username from users") 
end 

sẽ trả về một mảng băm tên cột ánh xạ tới giá trị cho hàng đó. Ví dụ. [{'id' => 1, 'name' => 'user1', 'username' => 'username1'}, ... ]

+3

Trong Rails 3: ' User.select ("id, name, username") ' –

3

Bạn cũng có thể làm

User.find(:all).map(&:id) 

để có được một danh sách các id người dùng nếu bạn đang cố gắng để có được một danh sách các id của người dùng hoặc tên

+0

Tôi đã googling cho điều này trong một thời gian. Cảm ơn! – Ashitaka

+3

Tôi không khuyên bạn nên theo cách này. Rất chậm –

+0

Đây là câu trả lời nhưng khá chậm. 'Người dùng.find (: all) 'trả về một tập hợp đầy đủ các đối tượng ActiveRecord cho mỗi mục. sau đó với ruby ​​nó ánh xạ trên các đối tượng đó và chỉ trả về các ID. Bạn vẫn có bộ sưu tập đó đang chờ để thu gom rác. hy vọng các ID của bạn không được sử dụng cho các hành động chuyên sâu bộ nhớ khác. 'User.pluck' và' User.select' hiệu quả hơn –

0

Trong mongoid, đó sẽ là:

User.only(:name, :username).where(id: params[:id]).first 
23

Khá câu hỏi cũ, nhưng các đường ray 3 cách sẽ là:

User.pluck(:id) 
0

SQL

SELECT id,name,username FROM Users

RUBY

User.select(:id, :name, :username)

với điều kiện, bạn có thể viết như sau: User.select(:id, :name, :username).find_by(:age 22)

1

Chúng ta có thể sử dụng select cho symbol hoặc string như:

User.select("id, name, username") 

hoặc

User.select(:id, :name, :username) 
0

thực sự cho bạn chỉ cần viết này

@user= User.select(:attributeN, :attributeN......., attributeN) 
respond_to do |format| 
    format.json { 
    render json: @user 
    } 
0

Bạn cũng có thể vượt qua trong một mảng, như vậy:

Model.all.select ['id', 'title'] 
Các vấn đề liên quan