私はUser
とMeetOption
テーブルを持っています。これは、多対多の関係である、と私はcreate_join_tableコマンドを使用してテーブルを結合を作成することができた。私はまた、作成したRails 5:モデルなしでテーブルを結合するレコードを追加する(has_and_belongs_to_many)
class CreateJoinTableUsersMeetOptions < ActiveRecord::Migration[5.0]
def change
create_join_table :users, :meet_options do |t|
# t.index [:user_id, :meet_option_id]
# t.index [:meet_option_id, :user_id]
end
end
end
:これは、移行ファイルを生成rails g migration CreateJoinTableUsersMeetOptions users meet_options
使用してユーザとmeet_optionモデルとの間の関連has_and_belongs_to_many
class User < ActiveRecord::Base
has_and_belongs_to_many :meet_options
#More codes below
end
class MeetOption < ApplicationRecord
has_and_belongs_to_many :users
end
この関連付けはうまくいきます。例えば、Railsコンソールでuser.meet_options
を照会することができます。
私の質問は:結合されたMeetOptionsUsers
テーブルのモデルはありません。どうすればレコードを追加できますか?現在、GUIデータベースソフトウェア(Postico)を使用して手動で行を追加する必要があります(user_id = 1; meet_option_id = 2
)。
ActiveRecordモデルが関連付けられている場合と同様に、MeetOptionUser.create(user_id: 1, meet_option_id: 2)
などのレコードをRailsコンソールに追加する方法はありますか?
優れた回答です。あなたが言及したシャベル演算子 '<<'を使って、ジョインテーブルにレコードを追加することができました。 'オプション= MeetOption.find_by(名称: 'メンター')' 'user.meet_options << option'また だけでなく、複数のmeet_optionアイテムと連携 'オプション= MeetOption.all' 'ユーザー。 meet_options << options' –
私はプロジェクト全体で 'has_many:through'をたくさん使っていますが、今度は単純な多対多の関係が必要なだけで、他の属性は保持されません。良い考え、ありがとう。 –
問題ありません。喜んで助けてください。 –