この記事はアピリッツの技術ブログ「DoRuby」から移行した記事です。情報が古い可能性がありますのでご注意ください。
海です。
railsのテーブルの多対多の関係について参考資料がすでに十分だと思いますけど、
ここで初心者向けにもう一度まとめます。
◆多対多の関係というのは
例えば、管理サイトのアカウントを作成して、そのアカウントは権限機能を持っています。
持っている権限機能によりアカウントができる操作も異なります。
アカウントテーブル(account.rb)と権限機能テーブル(function.rb)は多対多の関係です。
多対多の関係では、上記図のように結びついているように扱えますが、実際には結合テーブル(account_functions)が必要になります。
◆多対多の関係の使用について
モデル:
account.rbには has_and_belongs_to_many :funtions
function.rbには has_and_belongs_to_many :accounts
また、account.rbには下記のように追加
def chang_functions(selected_functions)
function_ids = selected_functions.keys.collect {|key| key.to_i}
self.functions = Function.find(function_ids)
end
コントローラ:
二郎というアカウントを作成するとき、下記のように使用すれば、
二郎のデータをaccountsテーブルに挿入される同時、
二郎が持っている3つ権限機能もaccount_functionsテーブルに挿入されます。
@account= Account.new(params[:account])
if @account.save
@account.chang_functions(params[:functions] || {})
flash[:notice] = “データが保存しました。”
redirect_to :action => :index
else
#エラーがある場合
:
end
簡単な説明ですが、ご参考になれれば。。。。。。。。…