ホーム DoRuby Ruby On Rail 多対多のテーブルへの保存の仕方

Ruby On Rail 多対多のテーブルへの保存の仕方

この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。

どもrickです。

多対多のテーブルとは、
ユーザーと特徴Tableがあるとして、ユーザーと特徴が互いに複数の値を参照するときに使います。
例えは、ユーザーが複数の特徴を登録したいときに、ユーザーn対特徴*となる。
ユーザーも1人ではないので、n対nとなる。
このようなときに使用する。

環境

Rails2.1.1
Postgres8.3.5

設定

名前は、DB1_DB2という命名規則になっている、DBの順番はあいうえお順

$ruby script/generate migrate model1_model2 //modelはいらないので、migrateだけ作成
db/migrateion/..

def self.up
create_table(:model1_model2, :id => false) do |t| //idは必要ないため消す
t.integer :model1_id
t.integer :model2_id
end
end

双方のmodelに

has_and_belongs_to_many :model名s //参照の値が複数だから複数形にする
保存するほうのmodelに(1を使用して2を呼び出した時は、1が保存するほう)

def model2_id=(value)
small = MODEL2.find_by_id(value)
selef.model2s << small
end

こんな風にすると値が自動に保存される。
きものぶぶんは、selef.smodel2s << smallだとおもう

更新する時、更新する方法はないとの事なので、
一度削除してから入れ直すなどするのが良いと思う。

以上。

記事を共有

最近人気な記事