我试图建立一个模型,Information
,属于User
或Client
的关系。
我考虑过投入Information.rb
belongs_to :user
belongs_to :client
以及User.rb
和Client.rb
has_one:信息
但这使得belong_to
和User
的信息Client
成为{{1}}。
有没有办法让它只能属于或者只是将其中一个字段留空?
P.S。如果需要,我可以使用Rails 4.2,Ruby 2.2.1和Devise进行帐户身份验证。
谢谢!
答案 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, :integer
和informational_type, :string
和Client
以及User
需要一个名为informational_id
的整数,并将其编入索引。