2017-11-29 6 views
2

多くのメソッドでバインドが引数として見えましたが、ドキュメントはありません。Ruby:ActiveRecord gemのバインドはどういう意味ですか?

Rails Source code

def find_by_sql(sql, binds = [], preparable: nil, &block) 
    result_set = connection.select_all(sanitize_sql(sql), "#{name} Load", binds, preparable: preparable) 
    column_types = result_set.column_types.dup 
    columns_hash.each_key { |k| column_types.delete k } 
    message_bus = ActiveSupport::Notifications.instrumenter 

    payload = { 
    record_count: result_set.length, 
    class_name: name 
    } 

    message_bus.instrument("instantiation.active_record", payload) do 
    result_set.map { |record| instantiate(record, column_types, &block) } 
    end 
end 
  1. bindsは何を意味するのでしょうか?
  2. どのように使用するのですか?
+1

名前付きバインド変数を使用すると、クエリを読みやすくすることができます。名前付きバインド変数は疑問符を記号で置き換え、一致する記号キーの値でハッシュを指定します。この記事をチェックしてくださいhttp://millarian.com/rails/quick-tip-rails-named-bind-variables/ – Vishal

答えて

0

SQLに疑問符が含まれている場合は、?バインドを使用してこれらのマークを置き換えます。たとえば、次のようなクエリを持っている場合:SELECT * from posts where id = 3あなたはRubyで書くことができます:我々は、値3?バインドされている

Post.find_by_sql(["SELECT * from posts where id = ?", 3])

。 さらに?がある場合、それらはその順序でbinds配列にバインドされます。 SQL文字列に?がない場合、バインドは無視されます。

関連する問題