|
地場物の栗が並び始めた。
|
|
落花生といえば秦野だ。
|
さて、RailsでLDAPを扱う方法はいくつかあるが、今回はActiveLdapを試してみた。
Gemfile に以下を追加
| gem ‘activeldap’, :require => ‘active_ldap/railtie’
| gem ‘net-ldap’
bundle updateする
コマンドプロンプトで以下を入力
# rails generate active_ldap:scaffold
Config/ldap.yml が生成されるので、適宜修正する
アプリ起動時に、この設定で自動的にコネクションが実行されるので、ActiveLdap::Base.setup_connection コマンドは不要
コマンドプロンプトで以下を入力 (User モデルのとき。適宜読み替えて)
# rails generate active_ldap:model User
/models/User.rb が生成されるので、適宜修正する
データ抽出(全件)には、Controllerなどに以下の様に書く
| @users = User.find(:all)
例えば、config/ldap.ymlのbaseが、
base: dc=kestrel,dc=jp
で、User.rbが、
ldap_mapping :dn_attribute => “cn”, :prefix => “ou=users”
だとして、
User.find("YOKOYAMA")
とすると、
DN: cn=YOKOYAMA, ou=users, dc=kestrel, dc=jp
が検索される。
データの属性値は、次のように参照する
| @users.each do |user|
| print user.cn,"\n”
| end
値が複数ある属性は配列で返される
例えば、複数部署に所属している人がいる場合、
if user.departmentNumber.kind_of?(Array)
print user.departmentNumber[0], “\n”
else
print user.departmentNumber, “\n”
end
の様に判別できる
ここまで確認したが、う?ん、ビミョー。
ActiveLdapって、便利なのか? Net-ldapでゴリゴリ書いてもそれほど違わないような気が。
User.find(:all).order(:cn) とか書けたら素敵なんだけど。並び順をコントロールするのが面倒そうだ(orderは使えない)