Ruby on rails 了解外键和类名在关联中的使用
我是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
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实际上也接受它,那么它做什么呢?