【问题标题】:Rails: Inserting into a table that does not have any modelRails:插入到没有任何模型的表中
【发布时间】:2017-10-30 12:52:36
【问题描述】:

我是 Rails 新手。

我有三个表 A、B 和 C,其中关系是 C 属于 A 到 B。现在我想在 B 中插入一个新条目以在 A 和 C 之间再建立一个关系。但问题是模型for B 不是在我正在处理的项目中创建的。表B是通过将B的create table命令放入表C的create table迁移文件中创建的。表b的结构为(id, A_id, C_id)。

create_table :C do |t|
    t.string :name
end

create_table :B do |t|
    t.belongs_to :A
    t.belongs_to :C
end

所以我对如何构建到表 B 的映射感到困惑。我想到的一种方法是通过将相应记录的 id 插入表 B 来创建 A 和 C 之间的映射。但是由于 B 的模型没有'不存在,所以我不能这样做。

有人可以解释或指出适当的资源吗?

【问题讨论】:

  • 你能解释一下这行吗“所以我被困在如何构造插入映射到表B中。表B是通过将B的create table命令放入创建表迁移文件来创建的表 C"
  • 为什么不为B 创建模型类?这就是模型 用于 的目的,以实现对数据库表的访问。
  • @GaganGupta 试图改进这个问题。你能再检查一次吗?
  • @SergioTulentsev 最后,只有在没有找到任何其他方法的情况下,我才会这样做。我只是想知道不这样做是否可行。
  • 我想知道你的模型关系是如何定义的?

标签: ruby-on-rails-4 rails-migrations


【解决方案1】:

我遇到了类似的问题。就我而言,push 成功了。

举个例子:假设我们有两个表 Doctors 和 Shifts,它们使用 Doctors_shift 连接。因此,如果您想为医生添加 Shifts,您可以使用

Doctor.find_by(id:doctor_id).shifts.push(instance_of_shift_you_want_to_add)

,例如 instance_of_shift_you_want_to_add 你基本上可以使用 Shift.find_by(id:shift_id)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 1970-01-01
    • 2013-04-30
    相关资源
    最近更新 更多