どちらも LIMIT 1 した結果を返す。
ただし first は、order の指定がなければプライマリーキーでソートする。
となっているようです。
require "active_record"
ActiveRecord::Base.logger = ActiveSupport::Logger.new(STDOUT)
ActiveSupport::LogSubscriber.colorize_logging = false
ActiveRecord::Migration.verbose = false
ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
silence_stream(STDOUT) do
ActiveRecord::Schema.define do
create_table :users do |t|
t.string :name
end
end
class User < ActiveRecord::Base
end
User.create!
end
User.take
User.first
User.order(:name).first
# >> User Load (0.1ms) SELECT "users".* FROM "users" LIMIT 1
# >> User Load (0.1ms) SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
# >> User Load (0.1ms) SELECT "users".* FROM "users" ORDER BY "users"."name" ASC LIMIT 1