Ruby on rails 是否有一种方法可以为“属于”关系指定关联\u外键?

Ruby on rails 是否有一种方法可以为“属于”关系指定关联\u外键?,ruby-on-rails,activerecord,associations,belongs-to,Ruby On Rails,Activerecord,Associations,Belongs To,我有一个模型,它使用属于关系。我希望能够指定外键和关联外键值。但是,我只能为所属的关系()指定外键值。是否有办法解决此问题 以下是我的例子: 我有一个客户模型。其location\u id键必须属于区域模型,其中id由place\u id引用。我想做的是: class ClientId < ActiveRecord::Base belongs_to :region, foreign_key: 'location_id', association_foreign_key: 'place_

我有一个模型,它使用
属于
关系。我希望能够指定
外键
关联外键
值。但是,我只能为
所属的
关系()指定
外键
值。是否有办法解决此问题

以下是我的例子:

我有一个客户模型。其
location\u id
键必须属于区域模型,其中id由
place\u id
引用。我想做的是:

class ClientId < ActiveRecord::Base
  belongs_to :region, foreign_key: 'location_id', association_foreign_key: 'place_id'
类ClientId

但是,我不能在这里指定
关联\u外键

关联不需要在同一个模型中以两种方式声明。你必须申报: 在其他相关模型中有一个/多个

class Client < ActiveRecord::Base
  belongs_to :region, foreign_key: 'location_id'

class Region < ActiveRecord::Base
  has_many :clients, foreign_key: 'place_id'
class客户端
您还没有解释清楚这一点。您是说
区域的主键是
位置id
?在这种情况下,您不需要
关联\u外键
,因为它不是
的has\u和\u属于\u many
。好的,谢谢!只是想确定一下:如果关系为0,那么有多少是有意义的?例如,这里一个区域可以有0个客户端。这就是为什么我不愿意在
区域
模型中指定此关系。如果调用,客户端将返回并清空记录。但您可能需要向某个地区的某些客户发送电子邮件,或者过滤建议算法。谁知道呢……根据(4.1.2.6)和(4.3.2.9)的规定,外键是指同一表中的has_many键和另一表中的has_many键。所以这里两者都应该等于
“location\u id”
对吗?假设您有一个客户的区域id为1。当声明has\u many:customers并调用:Region.find(1)时,您有一个Id为1的区域。customers rails将在客户中搜索整个Id为1的客户阵列。当庄家a属于:地区时。在执行Customers.first.region时,rails将查找region_id:1并返回单个对象。外键可以根据约定命名。地区名称:欧洲大陆地区。rails将转到表区域并在该字段中查找该区域。