Rails - 在连接表中创建/销毁记录

Chr*_*len 5 activerecord ruby-on-rails insert

我正在处理此记录插入/删除我不确定执行查询的语法是什么.

我有一个用户模型和一个事件模型.我创建了一个名为Personal的连接表,用于存储user_id,以及用户喜欢的任何事件的event_id.

我在我的事件控制器中创建了一个"添加"方法,所以每当有人点击它时运行到那个并执行我正在尝试开发的创建逻辑.该操作与我添加到显示所有事件的网格中的额外列相关联.

用户模型=>

 has_many :personals
Run Code Online (Sandbox Code Playgroud)

事件模型=>

has_many :personals
Run Code Online (Sandbox Code Playgroud)

个人模特=>

belongs_to :user
belongs_to :events
Run Code Online (Sandbox Code Playgroud)

我以为它会像=>

 @user = User.find(session[:user_id])
 @event = Event.find(params[:id])
 # Personal.new = User.Event?
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

tad*_*man 20

如果您正在使用一个has_and_belongs_to_many不幸的关联,删除相关链接可能会很棘手,因为每个链接都没有标识符.

使用has_many :through关系更容易维护,并允许您执行以下简单操作:

class User < ActiveRecord::Base
  has_many :user_events
  has_many :events,
    :through => :user_events
end

@user.events.delete(@event)
Run Code Online (Sandbox Code Playgroud)

这不会删除需要Event#destroy调用的事件本身,而是删除链接这两者的连接记录.