質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

1回答

467閲覧

Userモデルを2つ作成して登録したユーザー毎に別々の機能を追加したいです。

norun07

総合スコア8

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

0クリップ

投稿2020/01/17 01:17

前提・実現したいこと

Ruby on Rails でアプリを作成している者です。
実現したいことは、userモデルを2つ作成してそれぞれで別々の機能を追加したいという事です。
「user」、「user2」というモデルを作り、登録Formを別々にしてuserモデルに登録したユーザーはuserモデルの機能を使用可能で、user2モデルに登録したユーザーはuser2モデルの機能を使用可能という内容です。

発生している問題・エラーメッセージ

エラーメッセージ無し

該当のソースコード

ソースコード

試したこと

userモデルはdeviseのgemで実装して、user2モデルは一からユーザー登録の仕様を実装する形で進めようと思っています。
拙い説明で大変申し訳ありませんが、何卒お力添え宜しくお願い致します。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Mugheart

2020/01/17 01:31 編集

で、結局何についての回答を求めていらっしゃるのでしょうか。 > userモデルはdeviseのgemで実装して、user2モデルは一からユーザー登録の仕様を実装する形で進めようと思っています。 ご自身の中で次のステップが決まっているのであればそれを試してみれば良いかと思いますが。
norun07

2020/01/17 01:41

如何せん初心者な者でそのような事が可能かどうかをどなたかに回答いただければと思っておりました。 一旦自分の思った方向で実装してみようと思います。 Mugheart様ありがとうございました。
Mugheart

2020/01/17 01:46

「モデルを分ける」という行為が可能かどうかで言えば可能です。 ただし、そうすることが正しいかどうかとなると場合によりけりなのでなんとも言えません。 とにかく今は試して「思ったのと違う」となった時に、 それを踏まえた上で「こうしたいがどういうアプローチが正しいか」という質問をすれば良いです。 頑張ってください。
norun07

2020/01/17 02:48

ご丁寧にありがとうございます。 とにかく実装に移ります。 terateilの質問の仕方にも慣れていきたいと思います、、
guest

回答1

0

ベストアンサー

初学者さんということを前提に

userモデルはdeviseのgemで実装して、user2モデルは一からユーザー登録の仕様を実装する形で進めようと思っています。

という話であれば、仕様が決まっているので、追記・修正の依頼に記載のとおり実装すればよいと思います。
ただ、もし本来は下記のような質問をしたいのだとすると


実現したいことは、2種類のユーザーを作成してそれぞれで別々の機能をもたせたいのですが、Deviseを用いた場合どのような形で実装するのがのぞましいのでしょうか?

自分で考えたところ、「user」、「user2」というモデルを作り、登録Formを別々にしてuserモデルに登録したユーザーはuserモデルの機能を使用可能で、user2モデルに登録したユーザーはuser2モデルの機能をもたせるという形かと思ったのですが、アドバイスいただけないでしょうか?


たぶんわざわざ2つのモデルを作らなくても、Userモデルの中に一つカラムを追加して、その値で条件分岐をするのが一般的になるのでは?という回答をもらえると思います。

投稿2020/01/17 03:05

no1knows

総合スコア3365

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

norun07

2020/01/17 07:16

ご丁寧な回答ありがとうございます。 申し訳ございません。 そのような設計の理解ができなくて例えばどのようなカラムを追加すれば良いのでしょうか。 後、登録フォームで条件分岐を行うのでしょうか? 短絡的な質問ですみません。
no1knows

2020/01/17 08:12

例えばですが、Userテーブルにtypeカラムを下記のような形で追加しておきます。 t.integer :type, null: false, default: 0 そしてユーザー登録用のフォームを2種類作っておいて(new.html.erbとnew2.html.erbとか)、それぞれでtype=0とtype=1を隠し要素としておいておき、コントローラー側でtypeを取り出して条件分岐したりですかね。
norun07

2020/01/17 08:22

本当にありがとうございます。 めちゃくちゃ勉強になりました。 参考にさせていただきます。
no1knows

2020/01/17 08:30

それは良かったです!
norun07

2020/01/17 09:48

STIとenumを組み合わせて実装したいと思います! 大変参考になりました。
no1knows

2020/01/17 10:32

たぶんそんなに難しく考えずシンプルなほうが良い気がしますが…実装方法は人それぞれなのでおまかせします!
norun07

2020/01/18 06:22

色々試したいと思います。 ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問