Rails属于与多种可能性的关系

时间:2015-03-21 00:32:42

标签: ruby-on-rails ruby devise relationship belongs-to

我试图建立一个模型,Information,属于UserClient的关系。

我考虑过投入Information.rb

belongs_to :user
belongs_to :client

以及User.rbClient.rb

has_one:信息

但这使得belong_toUser的信息Client成为{{1}}。

有没有办法让它只能属于或者只是将其中一个字段留空?

P.S。如果需要,我可以使用Rails 4.2,Ruby 2.2.1和Devise进行帐户身份验证。

谢谢!

1 个答案:

答案 0 :(得分:2)

这听起来像是一种不寻常的联想,但它非常适合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, :integerinformational_type, :string

Client以及User需要一个名为informational_id的整数,并将其编入索引。