Rails belongs_to 多种可能性的关系
Rails belongs_to relationship with multiple possibilities
我正在尝试建立关系,模型 Information
、belongs_to 可以是 User
也可以是 Client
。
我考虑过放入我的 Information.rb
belongs_to :user
belongs_to :client
并在 User.rb
和 Client.rb
has_one:信息
但这使得信息可以 belong_to
同时 User
和 Client
。
有没有办法让它只能属于其中一个或不只将其中一个字段留空?
P.S。如果需要,我正在使用 Rails 4.2、Ruby 2.2.1 和 Devise 进行我的帐户身份验证。
谢谢!
这听起来像是一种不寻常的联想,但它非常适合 Polymorphic Association。在这种情况下,您将为此协会声明一个名称
class Information < ActiveRecord::Base
belongs_to :informational, polymorphic: true #or something like it
class User < ActiveRecord::Base
has_many informations, as :informational
class Client < ActiveRecord::Base
has_many informations, as :informational
而且您还需要向 Information
添加两列
informational_id, :integer
和 informational_type, :string
和 Client
和 User
需要一个名为 informational_id
的整数进行索引。
我正在尝试建立关系,模型 Information
、belongs_to 可以是 User
也可以是 Client
。
我考虑过放入我的 Information.rb
belongs_to :user
belongs_to :client
并在 User.rb
和 Client.rb
has_one:信息
但这使得信息可以 belong_to
同时 User
和 Client
。
有没有办法让它只能属于其中一个或不只将其中一个字段留空?
P.S。如果需要,我正在使用 Rails 4.2、Ruby 2.2.1 和 Devise 进行我的帐户身份验证。
谢谢!
这听起来像是一种不寻常的联想,但它非常适合 Polymorphic Association。在这种情况下,您将为此协会声明一个名称
class Information < ActiveRecord::Base
belongs_to :informational, polymorphic: true #or something like it
class User < ActiveRecord::Base
has_many informations, as :informational
class Client < ActiveRecord::Base
has_many informations, as :informational
而且您还需要向 Information
添加两列
informational_id, :integer
和 informational_type, :string
和 Client
和 User
需要一个名为 informational_id
的整数进行索引。