Hatena::Groupkdri

KazusaAPI開発日誌 このページをアンテナに追加 RSSフィード

2007-03-13

genomes(2):1:N関係、Nestした関係

|  genomes(2):1:N関係、Nestした関係 - KazusaAPI開発日誌 を含むブックマーク はてなブックマーク -  genomes(2):1:N関係、Nestした関係 - KazusaAPI開発日誌  genomes(2):1:N関係、Nestした関係 - KazusaAPI開発日誌 のブックマークコメント

g:kdri:id:nakao_mitsuteru:20070307#p1 の続き。

モデル

生物種(Organismモデル)は複数の染色体/ゲノム/プラスミド(Genomeモデル)を持ち得る。OrganismモデルとGenomeモデルは1:Nの関係になる。

Organismモデル。

class Organism < ActiveRecord::Base
  has_many :genomes
end

Genomeモデル。

class Genome < ActiveRecord::Base
  belongs_to :organism
end

Genome について、Organism に属しているので /organisms/1/genomes や /organisms/1/genomes/1 というようなURLでアクセスしたい。

config/route.rb

map.resources :organisms
#map.resources :genomes
map.resources :organisms do |organisms|
  organisms.resources :genomes	      
end

URL-helpers

route.rb の map.resources を変更したので、URL-helpers が変更される。変更は第一引数にorganism_idを要求する点。

変更前。

<td><%= link_to 'Show', genome_path(genome) %></td>

変更後。

<td><%= link_to 'Show', genome_path(genome.organism, genome) %></td>

これで、http://localhost:3000/organisms/1/genomes でorganism_id == 1の生物種のゲノムのリストが取得できるようになり、http://localhost:3000/organisms/1/genomes/1 でorganism_id == 1の生物種のgenome_id == 1のゲノムが取得できるようになる。

トラックバック - http://kdri.g.hatena.ne.jp/nakao_mitsuteru/20070313