1

私は create を持っておりcontroller、属性を持つ scaffold を使用していますmodel:view

org_name, org_description, webdomain, offc_addr, offc_ph

私の問題は、単一の組織に対して複数のアドレスを作成し、単一のアドレスに対して複数の電話番号を作成したいということです。

次のコマンドを使用することを確認していません

rails generate migration NAME [field:type field:type] [options]

テーブルを作成し、そのテーブルのビューの作成に関心のない他のテーブルとの関連付けを作成したいだけで、ネストされたフォームを使用しています。

それで、これが適切か、それとも私が何か他のことをするか教えてください...事前に感謝します。

4

4 に答える 4

2

以下に示すものを開始する前に、以前に作成したテーブルまたはコントローラーをすべて削除し、新しいものとして開始し、例外や重複を避けるために以下の手順に従う必要があります。

そのため、最初に 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

これがワシの助けになり、物事がクリアになることを願っています。乾杯 :)

于 2013-08-16T08:34:38.107 に答える
0

使用する

rails generate migration

移行ファイルのみを作成し、ビューやコントローラーは作成しません。これは、新しいテーブルまたは新しいフィールドを db スキーマに追加する良い方法です。

于 2013-08-16T06:41:08.010 に答える
0

モデルが必要です:

rails generate model address organization_id:integer, street:string zip:string city:string //etc

address.rbこれにより、models フォルダーにが生成され、データベースの移行が行われます。

次に、データベースを移行します。

rails db:migrate

データベースにテーブルが作成されます。

次に、コードでそれらを結び付けるためになどbelongs_toを調べる必要があります。has_many

于 2013-08-16T06:42:27.757 に答える