Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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 了解外键和类名在关联中的使用_Ruby On Rails_Associations - Fatal编程技术网

Ruby on rails 了解外键和类名在关联中的使用

Ruby on rails 了解外键和类名在关联中的使用,ruby-on-rails,associations,Ruby On Rails,Associations,我是rails新手,这是一个非常基本的问题。我试图了解外键和类名的需要。 has_many :task, foreign_key: "created_by" has_many :memberships, class_name: "TaskMembership" 有人能解释一下外键和类名的需要吗 有多个关联用于rails中的一对多类型关系。例如,如果您有一个模型用户,它可以有许多配置文件,那么您的用户到配置文件关联将有许多 class User < ActiveRecord::Ba

我是rails新手,这是一个非常基本的问题。我试图了解外键和类名的需要。

has_many :task, foreign_key: "created_by"
has_many :memberships, class_name: "TaskMembership"

有人能解释一下外键和类名的需要吗

有多个
关联用于rails中的一对多类型关系。例如,如果您有一个模型
用户
,它可以有许多配置文件,那么您的
用户
到配置文件关联将有许多

    class User < ActiveRecord::Base
      has_many :profiles
    end

    class Profile < ActiveRecord::Base
      belongs_to :user
    end
class用户
若配置文件表中的外键与用户id不同,则显式指定外键。类名也是如此。如果您的关联名称不同于实际的模型名称,则在关联之后显式指定类名(就像您对成员身份所做的那样)。 希望对您有所帮助。

在您的模型中

class First < ActiveRecord::Base
  has_many :seconds
end

class Second < ActiveRecord::Base
  belongs_to :first
end
class-First

在第二个类表中,创建第一个id列

假设您有一个用户模型和一个帖子模型,并且您必须设置一个关联,比如
User has many Post

User Model
has_many :posts

Post Model
belongs_to :user
现在假设您的用户是某个作者,所以我们必须设置一些有意义的名称,这样我们将使用author而不是user,但必须指定它引用的类

 Post Model
 belongs_to :author, class_name: 'User'
现在问题将出现,因为rails将在posts表中查找author\u id列。所以在这里,外键将出现在图片中。我们必须找到user\u id

Post Model
belongs_to :author, class_name: 'User', foreign_key: 'user_id'

请参阅更多更好的解释

这些是定义自定义类名和外键的选项。我已经说过了。仍然不清楚…我本可以写很多:taskmemberships所以???参考指南中的自联接。是的,我知道类名是明确指定的,但何时必须这样做???我的问题是如何知道何时要在这里使用class_name,假设您必须实现银行交互系统。您有一个类User,它是一个泛型类,可用于银行职员和客户。您有一个通信模型,并且希望在其中存储银行职员和客户id。现在,您将如何明确地获得员工的所有交互和客户的所有交互?这只是一个例子,您可以有许多不同的场景,在这些场景中,您不使用ID,并且在关联的模型中有您的外键。您可以将地址模型用于银行和用户。你可以说银行有一个银行地址,类别名称:“地址”@当您想要创建一个非约定的关系时,例如
has\u many:profiles
意味着默认情况下profile将有
user\u id
列,但是如果您想要基于
user\u id
以外的字段为profile定义
has\u many
关系,那么您必须像这样做:
has\u many:profiles,foreign\u key:“other\u field”
您实际上还没有回答原始问题,has\u many关联上的foreign\u key有什么用途?对我来说这很混乱,我假设只有belogns_To可以指定外键,但是rails实际上也接受它,那么它做什么呢?