したがって、User
とGroup
という2つのモデルがあります。別のモデルを作成する際にモデルを作成するためのベストプラクティス
User belongs_to :group
と
Group has_many :users
。
新しいUser
を作成するときは、すでに作成されたGroup
を確認して割り当て、またはユーザー指定の情報に基づいて新しいGroup
を作成します。 Group.find_or_create_by_name("Name")
これを行うには良い方法のようですが、私の質問はどこに配置する必要がありますか?私はそれがuser.rb
にする必要があります "脂肪モデル、スキニーコントローラ"に従っていると思います。それがモデルにある場合、ユーザー作成時にユーザー提供の文字列を渡す最善の方法は何ですか? user.rb
にメソッドを設定して、そのメソッドをusers_controller.rb
に呼び出す必要がありますか?
そして私は、関連する質問を推測:私は私のスキーマが照会の目的のために
create_table "users" do |t|
t.integer "group_id"
を反映すべきであることを知っています。 Railsはこれらを「自動的に」どのようにリンクしていますか? Group
モデルを作成するときは、string:id
という列を持つ必要があると思いますが、Railsは2つだけをリンクしていますか?
申し訳ありませんが、私は団体の理解が不足していますが、奇妙なことを一緒にハッキングしないようにしています。
はい、 'User'は、単一の' Group'に属することができますので、 'Membership'アソシエーションモデルの余分な抽象化は次のようになりますような何か不必要(私もそれを考慮していなかったが、感謝)。 – oflannabhra
また、私が正しく理解していることを確認するだけです: 'User#create'で' Group'を作成した例では、割り当ての必要はありませんか?つまり、 '@user.group_id = @ group.id'のような何かをする必要はありませんか? – oflannabhra
@oflannabhraはい、あなたはする必要があります。 '@ group.users.build(params [:user])'のようなことをしない限り。私は両方のシナリオで自分の答えを更新しました。 –