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

标签 ruby-on-rails activerecord insert

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

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

我在我的事件 Controller 中创建了一个“添加”方法,所以只要有人点击它就会运行它并执行我现在尝试开发的创建逻辑。该操作与我添加到显示所有事件的网格的额外列相关联。

用户模型 =>

 has_many :personals

事件模型 =>
has_many :personals

个人模型 =>
belongs_to :user
belongs_to :events

我以为会是这样的 =>
 @user = User.find(session[:user_id])
 @event = Event.find(params[:id])
 # Personal.new = User.Event?

有人可以帮忙吗?

最佳答案

如果您使用的是 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)

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

关于ruby-on-rails - Rails - 在连接表中创建/销毁记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2297221/

相关文章:

javascript - 从服务器生成客户端 JavaScript 时主要关注什么?

ruby-on-rails - 如何从场景中获取步骤定义中的@tag? - ruby

php - Yii2中的Active Record,连接多个表,查找某个线程的评分,并在ListView中检索评分

ruby-on-rails - Rails - ActiveRecord 使用 :dependent => :destroy on condition

ruby-on-rails - 为不同类型的 "task"对象创建 ActiveRecord 关联列表

SQL插入以用条件填充关联表

mysql - 如何将值插入包含空格的 MySQL 表

ruby-on-rails - 使用 Twitter Bootstrap Carousel 激活第一个项目的类

javascript - Rails 格式 DateTime.now 是一种方式,DateTime.yesterday 是另一种方式 - 如何获取过去的日期,格式如 DateTime.now?

mysql - 如何使用insert和select语句在表中添加外键?