次のようなほとんど静的なデバイスのテーブルがあります。
class CreatePlatforms < ActiveRecord::Migration
def change
create_table :platforms do |t|
t.column :model, :string, :null => false
t.column :name, :string, :null => false
t.timestamps
end
add_index :platforms, :model, :unique => true
Platform.create :model => "iPhone1,1", :name => "Original iPhone"
Platform.create :model => "iPhone1,2", :name => "iPhone 3G"
[...]
end
end
そして、プラットフォームを参照するテーブル、デバイス。次に、モデルをサーバーに送信し、作成したデバイスをデータベース内のそのモデルの対応する ID にリンクさせたいと思いますaccepts_nested_attributes_for :platform
。ただし、属性に id がない限り、レコードが作成されます。
accepts_nested_attributes_for
または同様の方法で、別の属性を使用して既存のレコードを検索する方法はありますか?
次のようにコントローラーで手動で交換することもできますが、それは厄介で最後の手段です。
params[:device][:platform] = Platform.find_by_model params[:device][:platform_attributes][:model]