準備
適当にrailsプロジェクトを作成し、Gemfileにgem 'ancestry'を記述しbundle installscaffoldを作る
$ rails g scaffold tenant name:stringTenantモデルを編集
# app/models/tenant.rbclass Tenant < ActiveRecord::Base
attr_accessible :name # 2014/1/21 parent_idは不要でした
has_ancestry
end
フォーム編集用ビューを編集
# app/views/tenants/_form.html.erb<div class="field">
<%= f.label :parent %><br />
<%= f.select :parent_id, options_from_collection_for_select(Tenant.all, :id, :name) %>
</div>
Tenantモデルへancestryカラムを追加してマイグレーション
# rails g migration add_ancestry_to_tenants ancestry:stringclass AddAncestryToTenants < ActiveRecord::Migration
def change
add_column :tenants, :ancestry, :string, after: :id
add_index :tenants, :ancestry
end
end
indexビューを編集(抜粋)
# app/views/tenants/index.html.erb<td><%= tenant.parent ? tenant.parent.name : nil %></td>
<td><%= tenant.ancestors.map &:name %></td>
<td><%= tenant.children.map &:name %></td>
<td><%= tenant.descendants.map &:name %></td>
この状態でモデルの作成を繰り返すと、indexの表示はたとえば次のようになる
この時、tenantsテーブルの中身は次のようになる
0 件のコメント:
コメントを投稿