Rails使用不同ActiveRecord模型的列作为外键 -- ruby-on-rails 领域 和 activerecord 领域 和 foreign-keys 领域 相关 的问题

Rails use column from different activerecord model as foreign key


简体版||繁體版
1
vote

问题

中文
  class Model1  #has an column "attr1" end  class Model2  #has an column "attr2" end  class Model3  #has an column "attr3"  belongs_to :model2   belongs_to my_model_1, class_name: 'Model1', primary_key: :attr1, foreign_key: "#{model2.attr2}-#{attr3}" end   

我收到以下错误执行此操作:

    `method_missing': undefined local variable or method `model2' for Model1 (call 'Model1.connection' to establish a connection):Class (NameError)   

有没有一种方法可以使用props_to关系的列作为外源的一部分,这是我想做的方式?

英文原文
class Model1  #has an column "attr1" end  class Model2  #has an column "attr2" end  class Model3  #has an column "attr3"  belongs_to :model2   belongs_to my_model_1, class_name: 'Model1', primary_key: :attr1, foreign_key: "#{model2.attr2}-#{attr3}" end 

I get the following error doing this:

  `method_missing': undefined local variable or method `model2' for Model1 (call 'Model1.connection' to establish a connection):Class (NameError) 

Is there a way of using a column from belongs_to relation as part of the foreign_key the way I'm trying to do?

        

回答列表

1
 
vote

您无法将动态值传递给 call2 ,因此您必须使用所选择的列名称的值手动编写它:

  call3  

您可以查看文档 。

 

You can't pass a dynamic value to :foreign_key so you will have to write it manually using the value you've chosen for the column name:

belongs_to my_model_1, class_name: 'Model1', primary_key: :attr1,                        foreign_key: "model2_attr2_attr3" 

You can check out the docs here.

 
 

相关问题

3  MySQL外国关键自动生成的名称确定吗?  ( Are mysql foreign key auto generated names deterministic ) 
当创建约束时,它们是给出的名称,看起来像这个'fk5e6b78655a1514e'。 我想知道名称生成是确定的还是随机的。 我注意到我使用的两个单独的数据库,相同的模式,最终以相同的FK名称。 在从一个版本的模式到另一个版本的升级脚本到另一个版本来利用这些约束名称时,它是否有意义? ...

1  如何在Microsoft Access中以编程方式删除外键约束  ( How do i delete a foreign key constraint programmatically in microsoft access ) 
如何在Microsoft Access中以编程方式删除外键约束,优选使用SQL。对于初学者,我不知道如何找到外键的名称。 我使用JDBC-ODBC桥接从Java应用程序访问。我想从我的Java应用程序执行SQL。 我可以看到访问中的关系,在关系视图中,但似乎没有办法找出名称。如果我能找到我希望的名字,我可以用alte...

0  PHP / MYSQL /键:将表插入两个表格  ( Php mysql keys inserting table into two tables consistently ) 
我在phpmyadmin 中创建了这些表 Tile0 我想要 Tile1 与food.id与 Tile2 和 Tile3 相匹配。 无论如何,我想将数据插入 9988766614 和 998876615 998876615 9988876615 998876616 , Tile7 , Tile8 信息...

0  如何自动填充MySQL中的外部Identity键列?  ( How to auto populate the foreign identity key column in mysql ) 
这一直在一两周或两个人烦恼。老实说,这很简单,但不知何故,我无法纠正我的脑袋。 我有两个表: 用户 +---------+----------+----------+ | user_id | username | password | +---------+----------+----------+ ...

1  实体框架未生成应用程序外键  ( Entity framework doesnt generate applicationuser foreign key ) 
注意:对于这个问题,我简化了一点模型。 IM在ASP.NET核心MVC应用程序上工作(具有实体框架核心)。我有三种型号。我有一个应用程序(从IdentityUser扩展),我有一个活动模型,我有一个"注册" 模型,它具有外部键,对ApplicationUser具有外键和外键。至少,这就是这个想法。事实是,实体框架将...

0  为什么要打扰外钥匙?  ( Why bother with foreign keys ) 
我是第一次学习SQL,我在沿着这个网站跟随: http://code.tutsplus.com/articles/sql-for-beginers-part-3-database-relationships- ett-8561 作者归功于宣布外国钥匙的麻烦,但我认为这不为我们做任何事情。这是来自页面的示例: ...

-4  主要和外键  ( Primary and foreign key ) 
我们是否可以在表中应用两个主要键? ...

1  在Hibernate中的一对多单向关系中更改外键约束的名称  ( Change name of foreign key constraint in one to many unidirectional relation in ) 
我正在使用hibernate 5.2.10版。 这里是我的关系命令实体: @Entity public class Order { @Id @Column(name = "ID", length = 22) private String id; @OneToMany(mappedBy = "o...

98  MySQL创建与外键的表格,给出errno:150  ( Mysql creating tables with foreign keys giving errno 150 ) 
我正在尝试用两个外键在mysql中创建一个表,其中引用2个其他表中的主键,但我得到一个errno:150错误,它不会创建表格。 这是所有3个表的SQL: CREATE TABLE role_groups ( `role_group_id` int(11) NOT NULL `AUTO_INCREMENT`, ...

1  CakePHP显示与外键相关的其他模型  ( Cakephp display other model associated with foreign key ) 
我有带有habtm关系的型号项目和演员 (工作正常) 。 现在,我添加了角色模型,wich包含actorid,itemid(作为外键)和演员角色。 在我的项目视图中,我想显示演员及其'角色。 我已经设置了recursive = 2。 当我调试$项目时,我会收到属于该演员的所有角色。 相反,我只想显示显示的角色,其中包...

687  如何截断外键约束表?  ( How to truncate a foreign key constrained table ) 
为什么 truncate 在 mygroup 工作? 即使我有 ON DELETE CASCADE SET 我得到: 错误1701(42000):无法截断在外部键约束中引用的表( 99887667 。 instance ,约束 instance_ibfk_1 外键( <?php define("PROJECT_H...

3  级联删除JPA @onetomany VS数据库级联外键删除  ( Cascading remove in jpa onetomany vs database cascade foreign key delete ) 
我看到了很多类似的问题,但没有找到一些结论的决定性。 使用JPA时,如果您有@onetomany关系,它可以指定级联 REMOVE 操作。同时,如果键基行被删除,可以在数据库中指定外键,以删除密钥基行。 JPA示例: @Entity public class Parent { @Id priv...

0  这些MySQL外键也有指定指数  ( Should these mysql foreign keys also have index assigned ) 
我有3个表。 产品, category ,用户 类别具有名为 c_id 的主键 用户具有名为 u_id 的主键 产品表有2 FOREIGN KEYs 。 cat_id 和 sermar_id cat_id 在类别表中引用 c_id sermar_id 是指用户表中的 u_id 。< / p...

2  使用下拉菜单FookEyKeykey:IntegrityError XXX_ID保存FormeSet可能不会为null  ( Saving formset with drop down menu foreignkey integrityerror xxx id may not be ) 
我正在尝试拥有一个formset,其中每个表单(propertyselector)有一个下拉菜单(propertyselector.property),而该菜单的每个项目都是异常的另一个模型(属性)。 在某种程度上,当我尝试提交并保存formset时,我得到了: Exception Type: Integ...

0  外键的字段类型是否与引用的主键不同?  ( Can the field type of a foreign key be different to the referenced primary key ) 
我得到了一个由我设计的E-R模型。但我没有办法联系作者。 在这个模型中有一些让我困惑的东西。 在表A中,主键是一个整数字段。表B具有引用A的PK的外键。但是B的这个FK是VARCHAR场。 我刚开始学习数据库,并从未在工作中看到或这样做。 它是否合理和可实现? 请注意,该模型适用于MySQL。 ...

14  MySQL更改外键类型  ( Mysql change type of foreign key ) 
我正在使用mysql,我有一个表,其中一个索引用作许多其他表中的外键。我想改变索引的数据类型(从签名给未签名的整数),什么是最好的方法? 我尝试在索引字段上更改数据类型,但是失败,因为它被用作其他表的外键。我尝试在其中一个外键上更改数据类型,但失败,因为它与索引的数据类型不匹配。 我想我可以手动删除所有外部密钥约束...

4  django:如何从包含Foreesskeys的多个模型中制作一种形式  ( Django how to make one form from multiple models containing foreignkeys ) 
我正在尝试在一个使用多个模型的一页上制作形式。模型相互引用。我无法让表单验证,因为我无法弄清楚如何让表单中使用的两个模型的ID到表单中以验证它。我在模板中使用了一个隐藏的键,但我无法弄清楚如何在视图中使其工作 我的代码如下: 视图: def the_view(request, a_id,): if requ...

0  phpmyadmin - innodb桌子不会加入  ( Phpmyadmin innodb tables will not join ) 
这是我的数据库结构: CREATE database mytvguide CREATE TABLE IF NOT EXISTS `channels` ( `id` int(11) NOT NULL auto_increment, `channel1` varchar(25...

20  外键可以作为主要键吗?  ( Can a foreign key act as a primary key ) 
我目前正在为我们的团队项目设计数据库结构。目前,我有这个问题:有可能将外键充当另一个表中的主要键吗? 以下是我们系统数据库设计的一些表: user_accounts students guidance_counselors 我想发生的是 user_accounts 表应包含IDS(据说登录凭据到系统)和学生...

5  LINQ到SQL Datacontext未更新外键关系  ( Linq to sql datacontext not updating for foreign key relationships ) 
我正在针对使用l2s的存储库编写数据库测试。在我的数据库中,我有一个 Manifest 实体和 AllocatedTransaction 实体。 AllocatedTransaction实体对清单ID具有外键。 DDL看起来像这样: Manifest: Id - int - identity AllocateT...

0  yii - 插入时与AR和FK的错误  ( Yii errors with ar and fk when inserting ) 
我有简单的单元测试: $newItem = new Item; $itemTitle = "New item 1"; $newItem->setAttributes( array( 'part' => '0000', 'typ...

0  插入引用外键的交叉表  ( Inserting into intersection table referencing foreign key ) 
prop 提前 propdescription 很多关系 图像 imageid. imageDescription image_has_prop prop_propid. image_imageid 在我的应用程序中,我需要将数据插入 image_has_prop 。 imageID中的用户类型,...

0  MySQL在带外键的表格上更改引擎  ( Mysql change engine on tables with foreign keys ) 
所以,在创建我们的表的过程中,我们没有足够的重视我们的系统,并使用 InnoDB 引擎创建所有表。这真的只是糟糕的,因为我们希望在少数一列中拥有 FULLTEXT 索引。 所以,现在我想转换。虽然我在它的时候,我只想将所有表转换为 MyISAM ,以便如果我们在将来添加了我们想要索引的列,我们有该选项。所以我有下面的...

32  是否可以将一列引用为多个外键?  ( Is it possible to reference one column as multiple foreign keys ) 
我有很少的表,我想将一个列从pdf表引用到多个其他表。 例如,如果pdf表 ifaddrs * ifAddrs = nullptr; getifaddrs(&ifAddrs); for (ifaddrs * it = ifAddrs ; it != nullptr ; it = it->ifa_next) { ...

0  嵌套一对多的外国关键关系  ( Foreign key relationship in nested one to many ) 
我有这些类,具有单向的一对多关系映射如下: @Entity public class DatabaseDetailsVO { @Id // primary key for DatabaseDetailsVO private String databaseName; @OneToM...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有