以下に示すものを開始する前に、以前に作成したテーブルまたはコントローラーをすべて削除し、新しいものとして開始し、例外や重複を避けるために以下の手順に従う必要があります。
そのため、最初に Organizations の足場と、PhoneNumbers と Addresses の単純なモデルを生成する必要があります (これにより、テーブルを追加するための移行も生成されます)。組織のみのスキャフォールドを生成する理由は、PhoneNumbers または Addresses のフォーム (ビュー) が必要ないためです。ただし、アドレスを組織に関連付け、phone_numbers をアドレスに関連付けて、後でコードを介して処理することになります。簡単に保ち、確実に機能するように説明します。まず、次のコマンドを実行する必要があります。
rails generate scaffold organizations org_name:string org_description:text webdomain:string
rails generate model address offc_addr:text organization_id:integer
rails generate model phone_number offc_ph:string address_id:integer
これで、必要なものがすべて生成されます。次に、次のコマンドを実行して、データベースにテーブルを追加する必要があります。
rake db:migrate
それが完了したら、以下に示すようにモデルを微調整する必要があります。
#FOR ORGANIZATIONS
class Organization < ActiveRecord::Base
attr_accessible :org_description, :org_name, :webdomain
has_many :addresses
#THIS IS TO MAKE IT EASIER TO MANAGE IT IN VIEWS (read about nested attributes if you do not know)
accepts_nested_attributes_for :addresses
end
#FOR ADDRESS
class Address < ActiveRecord::Base
attr_accessible :offc_addr, :organization_id
belongs_to :organization
has_many :phone_numbers
#THIS IS TO MAKE IT EASIER TO MANAGE IT IN VIEWS (read about nested attributes if you do not know)
accepts_nested_attributes_for :phone_numbers
end
#FOR PHONE NUMBER
class PhoneNumber < ActiveRecord::Base
attr_accessible :address_id, :offc_ph
belongs_to :address
end
あなたがする必要があるのはそれだけです。ビューで、organization オブジェクトを使用して fields_for addresses を生成し、address オブジェクトを使用して fields_for phone_numbers を生成するだけです。あなたの助けとして、以下のリンクからnested_attributesの動作を読むことができます:
http://apidock.com/rails/ActionView/Helpers/FormHelper/fields_for
これがワシの助けになり、物事がクリアになることを願っています。乾杯 :)