Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails—如何在这些模型之间建立关联(不是基于“id”,而是基于“电子邮件”)_Ruby On Rails_Model_Foreign Keys_Associations_Belongs To - Fatal编程技术网

Ruby on rails Rails—如何在这些模型之间建立关联(不是基于“id”,而是基于“电子邮件”)

Ruby on rails Rails—如何在这些模型之间建立关联(不是基于“id”,而是基于“电子邮件”),ruby-on-rails,model,foreign-keys,associations,belongs-to,Ruby On Rails,Model,Foreign Keys,Associations,Belongs To,我有这些模型,它们显然具有更多属性,但为了简单起见,我将它们保留如下: class User < ActiveRecord::Base has_many :subs, :foreign_key => :email, :class_name => "subs" end class Subscription < ActiveRecord::Base belongs_to :plan belongs_to :user end 我收到以下错误消息: uninitia

我有这些模型,它们显然具有更多属性,但为了简单起见,我将它们保留如下:

class User < ActiveRecord::Base
  has_many :subs, :foreign_key => :email, :class_name => "subs"
end
class Subscription < ActiveRecord::Base
  belongs_to :plan
  belongs_to :user
end
我收到以下错误消息:

uninitialized constant User::subs
我想请你们帮我建立这个协会

谢谢

未初始化的常量User::subs

此代码

class User < ActiveRecord::Base
  has_many :subs, :foreign_key => :email, :class_name => "subs"
end
应该是这样的

class User < ActiveRecord::Base
  has_many :subs, :foreign_key => :email, :class_name => "Subscription"
end
当您在关联中使用class_name选项时,它应该指向受尊重的模型类名。在您的情况下,它是Subscription而不是subs。因为没有带有classname subs的模型,所以它会引发该异常

class User < ActiveRecord::Base
  has_many :subs, :foreign_key => :email, :class_name => "Subscription", :primary_key => :email
end

class Subscription < ActiveRecord::Base
  belongs_to :plan
  belongs_to :user, :foreign_key => :email, :class_name => "Subscription", :primary_key => :email
end

您必须设置正确的类名,还必须设置主键。

我也尝试了您的建议,但输出是->但表中的订阅是10条记录,其中包含该用户的电子邮件。我刚刚检查了生成的SQL查询:SELECT subscriptions.*FROM subscriptions WHERE subscriptions.email=1-这显然是错误的,应该有一个电子邮件地址而不是1。如果外键是email,那么查询中怎么可能是ID而不是email地址?@user984621我的帖子只回答您遇到的主要错误,即未初始化的常量User::subs。您在哪一行收到此错误?
class User < ActiveRecord::Base
  has_many :subs, :foreign_key => :email, :class_name => "Subscription", :primary_key => :email
end

class Subscription < ActiveRecord::Base
  belongs_to :plan
  belongs_to :user, :foreign_key => :email, :class_name => "Subscription", :primary_key => :email
end