回傳帶入的參數與primary key(流水編號id)相同的資料。
找到primary key(id)是3的user
user = User.find(3)
=> #<User id: 10, first_name: "Leo">
Model會幫我們翻譯成以下的SQL語法
SELECT * FROM users WHERE (users.id = 10) LIMIT 1
特別注意的是,find方法如果沒有找到對應的資料,會噴出錯誤ActiveRecord::RecordNotFound
find_by方法會取回第一個符合條件的資料
#回傳第一個符合條件的資料
User.find_by(first_name: 'Leo')
#=> #<User id: 3, first_name: "Leo">
#如果沒有對應的資料會回傳nil
User.find_by(first_name: 'Jon')
#=> nil
Model同樣會幫我們翻譯成SQL語法
SELECT * FROM users WHERE (users.first_name = 'Leo') LIMIT 1
where方法則讓我們可以得到所有符合條件的集合(collection),如果沒有符合的資料則會會傳空的集合
#找出所有符合名字是"David"的user且照created_at的時間降序排列
users = User.where(first_name: 'Leo').order(created_at: :desc)
上面的where會找出所有符合條件的集合,而後面的order方法可以決定排列的方式,:desc表示降序(Descending)排列
會幫我們翻譯成下面的SQL語法
SELECT * FROM "users" WHERE (users.first_name = 'Leo') ORDER BY created_at DESC
以下做個小總結。
你可以這樣回答: