Activerecord链接2个表

Activerecord链接2个表,activerecord,Activerecord,我已经能够制作两个ActiveRecord表,Profile和Bot。我一直不知道如何正确地将它们连接起来 有数千个档案,其中列为用户名、性别。少数机器人具有列botname,level 当机器人访问配置文件时,需要记录两条信息已访问和响应应针对该特定机器人进行更新VISISTED是一个布尔值,表示一个特定的机器人访问了该特定的配置文件。响应是一个字符串,与访问的类似这是一个特定配置文件发送的特定机器人的响应。我想我需要一个连接这两个表的第三个表 我需要记录每个机器人访问的每个配置文件以及访问时

我已经能够制作两个ActiveRecord表,ProfileBot。我一直不知道如何正确地将它们连接起来

有数千个档案,其中列为用户名、性别。少数机器人具有列botname,level

当机器人访问配置文件时,需要记录两条信息已访问响应应针对该特定机器人进行更新VISISTED是一个布尔值,表示一个特定的机器人访问了该特定的配置文件。响应是一个字符串,与访问的类似这是一个特定配置文件发送的特定机器人的响应。我想我需要一个连接这两个表的第三个表

我需要记录每个机器人访问的每个配置文件以及访问时发生的响应

如何创建此关系以及如何设置/更新列


谢谢

我不能完全确定您的要求,因此我将重申:

  • 表配置文件:id、用户名、性别(注意,我将表名改为单数)
  • 表Bot:id、botname、level
  • “机器人”以某种方式“访问”个人资料。您需要跟踪机器人何时访问了配置文件
  • 当机器人访问配置文件时,将生成一个“响应”字符串,并且需要保留该响应字符串。我想它应该和访问记录一起保存
  • 我认为你对加入表格的直觉是好的。但是,我认为布尔值的“已访问”列不起作用,因为如果您有一个访问记录,则表示该配置文件已被访问。如果该记录不存在,则不会被访问

    鉴于此,我认为您的表格如下所示:

    profile 
    ---------
    profile_id integer autoincrement
    username varchar(255)
    gender ...
    
    bot
    ---------
    bot_id integer autoincrement
    name varchar(255)
    level ...
    
    visit
    ---------
    visit_id integer autoincrement
    bot_id integer
    profile_id integer
    visit_time datetime
    response varchar(255)
    
    为了保持数据的完整性,您需要在此访问表与配置文件表和bot表之间设置外键约束

    alter table visit
        add constraint visit_profile_profile_id_fk 
        foreign key (profile_id) 
        references profile (profile_id);
    
    alter table visit
        add constraint visit_bot_bot_id_fk 
        foreign key (bot_id) 
        references profile (bot_id);
    
    您需要决定给定的机器人多次访问特定配置文件是否“合法”。如果不是,您应该在visit表中对profile_id和bot_id的组合设置一个唯一的约束,并在DBMS向您抛出重复的键错误时捕获它们(或者处理重复)


    我希望这会有所帮助。

    值“已访问”和“响应”中存储了哪些数据?您是否需要跟踪机器人访问的每个配置文件?或者只是机器人访问的最后一个配置文件?问题更新以回答您的问题。回答得好。非常感谢你。