2

1 人以上のユーザーを持つことができる最上位のアカウントを実装しようとしています。私のアプリは認証に Devise を使用しているため、サインアップ フォームを User モデルの一部として保持したいと考えています。

モデルは正しく設定されていると思いますが、登録フォームがどのように機能するかを理解するのに苦労しています。

これが私がこれまでに持っているものです...

ユーザー.rb

class User < ActiveRecord::Base
  rolify
  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable,
         :validatable, :omniauthable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :role_ids, :as => :admin
  attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :account, :company

  # Association with service accounts
  has_many :service_accounts

  # Association with company account
  belongs_to :account

end

Account.rb

class Account < ActiveRecord::Base
  attr_accessible :company

  # Association with users
  has_many :users, :dependent => :destroy

end

登録/new.html.erb

<h2>Sign up</h2>
<%= simple_form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => {:class => 'form-vertical' }) do |f| %>
  <%= f.error_notification %>
  <%= f.input :name, :autofocus => true, :placeholder => "Name" %>
  <%= f.input :email, :placeholder => "Email Address" %>
  <%= f.input :password, :placeholder => "Password" %>
  <%= f.input :password_confirmation, :placeholder => "Confirm Password" %>
  <%= f.button :submit, 'Sign up', :class => 'btn btn-large btn-primary' %>
<% end %>
<%= render "devise/shared/links" %>

これが私がいくつかの助けを借りることができるものです

上記の登録フォームに「会社」フィールドを追加したいと考えています。Company は Account テーブルの列です。新しいユーザーが登録したら、そのユーザー用に新しいアカウントを作成し、company フィールドで提供されたものに company 属性を設定したいと思います。

フォーム (会社フィールドを追加するため) とコントローラー (ユーザーがフォームを送信したときに新しいアカウントを作成し、会社フィールドを更新するため) の両方に必要なコードに問題があります。

ありがとう!

4

1 に答える 1

1

同様の要件を持つアプリの作業を終了しました。関係は良好に見えます。関連付けるデータを取得し、同時に関連付けを追加/更新 するbefore_saveフィルターが必要になる可能性があります。UserAccount

accepts_nested_attributes_for親(あなたの場合はアカウント)が子(ユーザー)の作成を推進しているより一般的な状況を処理するように設計されていると思いますが、 も調べる必要があります。Devise で User を作成し、その後または後で関連付けを作成し、関連付けられたデータを Account モデルに追加していると思われます。

考慮すべきことは、会社が独自のモデルであるかどうかです。この場合、ユーザーにはアカウントがあり、アカウントには会社があります。最近の「マルチテナント」アプリケーションの RailsCastをチェックしてみてください。あなたのケースには当てはまらないかもしれませんが、私の場合は当てはまりました。また、データを管理および構造化する際に考えていなかったことがいくつかありました。初めてアプリを起動したとき。

于 2012-11-29T17:17:24.390 に答える