0

私は、消費者と企業の両方に機能を提供するアプリを構築しています。モデルを作成する際に、ユーザー (消費者) とビジネスを考えています...各ビジネスにもユーザーがいますが、ユーザーは必ずしもビジネスに属しているとは限りません。冗長性を減らすために、ユーザーで名前、電子メールなどを収集し、ビジネスで特定のビジネス情報 (住所、電話) を収集します。

class Business < ActiveRecord::Base
   belongs_to :user  
end

class User < ActiveRecord::Base
 has_one :business #only if business user, not consumer
end

これは、目的の関係を構成する正しい方法ですか?

次に、ビジネス登録の時間になると、最初にビジネスオブジェクト、次にユーザーであるネストされたフォームを持つことは可能ですか (そしてどのように) ので、その順序で情報を収集していますか? 私が見つけたすべての例/情報は、最初にユーザー情報がキャプチャされ、次にサブモデルがキャプチャされたセットアップを示しています。

次の例では、これは正しいでしょうか。

<%= form_for(@business) do |f| %>
  #grab business info
<%= f.fields_for :user do |ff| %>
 #grab user info

お時間とご協力いただきありがとうございます。

4

2 に答える 2

0

企業には複数のユーザーがいる可能性があるとおっしゃいましたが、次のようにする必要があります。

class Business < ActiveRecord::Base
  has_many :users
end

その後、ユーザーはビジネスに所属します(オプションで)

class User < ActiveRecord::Base
  belongs_to :business
end

フォームでは、最初にビジネスのフォームを呼び出します。

form_for @business do |business_form|

次に、ビジネスのユーザーを編集できます。

business_form.fields_for :users do |user_form|

まだユーザーがいない、作成中の新しいビジネスの場合は、コントローラーでそのビジネスに必要な数のユーザーを作成して、ユーザーサブフォームに操作するオブジェクトを含めることができます。コントローラ内:

5.times do
  @business.users.build
end

上記の結果、ビジネスの5つの新しいユーザーサブフォームが作成されます。

于 2012-09-06T13:33:26.737 に答える