2011-12-14 108 views
1

我持有的社交网络的模式。即(推特,脸书,...)。然后我需要有用户模式和公司模式两者的has_many社交。我需要使用的has_many:通过关系即。Rails的关系模型

  • 用户可以有很多社交
  • ,公司可以有许多社交
  • 而社交属于用户和公司

将这样的事情是正确的?

class Social < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :company 
end 

class User < ActiveRecord::Base 
    has_many :social_networks 
    has_many :socials, : through => :social_networks 
end 

class Company < ActiveRecord::Base 
    has_many :social_networks 
    has_many :socials, : through => :social_networks 
end 

我需要模特SocialNetworks吗?

然后我会在2连接表:

socials_users & companies_socials

这将是这样做的正确方法?

我不认为更容易has_and_belongs_to_many将这项工作?

希望有一个可以摆脱以正确的方式有些光做到这一点!

回答

0

测试后有使用HABTM即没有问题。

class Social < ActiveRecord::Base 
    has_and_belongs_to_many :users 
    has_and_belongs_to_many :companies 
end 

class User < ActiveRecord::Base 
    has_and_belongs_to_many :socials 
end 

class Company < ActiveRecord::Base 
    has_and_belongs_to_many :socials 
end 

然后创建2个连接表

socials_users & companies_socials