在Rails 4中同时使用POLYMORPHIC和:THROUGH关联?

时间:2015-03-10 19:48:44

标签: ruby-on-rails activerecord model-view-controller

我很难在Rails中使用更高级的关联。

这是我想要做的:

  • 楼主可以创建很多属性,而且它们都属于房东

  • 每个属性可以有多个租户,每个租户只能属于一个属性。

  • 土地领主应该能够在他各自的财产中对新租户使用CRUD。

  • 租户只能看到与其属性相关的属性/状态

以下是我认为应如何制定

class User < ActiveRecord::Base
  belongs_to :tenant, polymorphic: true
end

class Property < ActiveRecord::Base
  has_many :users, as: :tenant
  belongs_to :landlords

end

class Landlord < ActiveRecord::Base
  has_many :property
  has_many :users, as: :tenant, through: :properties

end

这是对的吗?

没有多态关联会更好/更少复杂,只使用直通关联吗?

1 个答案:

答案 0 :(得分:0)

我会做这样的事情:

class Landlord 
  has_many :properties
  has_many :tenants, through: :properties
end 

class Tenant
  belongs_to :property
  belongs_to :landlord, through: :properties
end

class Property
  belongs_to :landlord
  has_many :tenants
end 

有关详细信息,请参阅此active record associations guide