私は自分のアプリケーションでActive Adminを使用しています。Ruby on Rails、ユーザーモデル、Active Adminクエリ
アプリケーションにはUsersモデル(Devise)がありますが、私は3つのユーザーグループ、つまり親、教師、学生がいます。それぞれには独自のモデルがあります。
例えば、私がここでやろうとしています何
student.rb
belongs_to :user
user.rb
has_one :student
parent.rb
belongs_to :user
user.rb
has_one :parent
ので、「FIRST_NAME、LAST_NAME、電子メール」などユーザーモデルのユーザーグループ間で同じになる属性を格納して、個々を使用しています各ユーザーグループに固有の属性を格納するためのユーザーモデル。私は、メインユーザーテーブルと3つのユーザーグループテーブルの間に1対1の関係を使用しています。ここで
(私は、ユーザーグループのテーブル内のすべての属性を表示していないに注意してください)。
問題は、これは、アクティブな管理にとてもうまく機能していないです。ビューで私はユーザーを作成し、次に異なるビューで親と学生を割り当てる必要があります。たとえば、学生のユーザーレコードを、複数のモデルビューに移動してレコードを完成させることなく、メインのUsersテーブルの属性とStudentsテーブルの一意の属性を入れて、単一のフォームを作成したいと考えています。あまりにも複雑です。
異なるモデルからの入力を1つのビューでレンダリングする方法はありますか?つまり、生徒には、生徒固有の入力とともに、「名前」、「姓」などがUsersテーブルから表示されますか?
あなたがアプローチを取っていたら、私はここにあなたが従う方法をとっていますか?私は団体を正しくやっているかどうかもわからない。実際、私はこれを行う最も効率的な方法であるとは確信していません。
私はenumを使用して役割を割り当てています。
こちらのご案内をお待ちしております。ありがとう。
こんにちは、ありがとう、私は前にSTIを試しましたが、いくつかの情報源はこの目的のためにSTIを使用することに対して警告しましたか?結果は今よりもやや良いが、私はそれを少し怖がっていた。 STIは安全で頑丈な道ですか? – Co2
欠点は、いくつかの冗長性があることです。あなたのテーブルには、特定のユーザタイプ(例えば、学生の 'class_id')にのみ適用されるフィールドがあります。しかし、私はそれが支払う小さな値段だと思う。これらの異なるタイプのユーザーそれぞれの行動、ビュー、およびコントローラーに重複はありますか?もしそうなら、私は真剣にこれらのユーザーモデルを表現するために単一のテーブルを使用することを検討します。 –
STI以外の方法で自分の答えを更新したので、あなたのフォームに 'nested_params'を使わなければなりません。 –