我应该使用哪个协会?

时间:2015-04-14 04:34:46

标签: ruby-on-rails ruby-on-rails-4

我的应用有5个核心型号。我试图找出关联模型的最佳方法。我应该建立多少个表,哪个等等?

以下是我想要包含的关联及其各自的模型:

用户
有很多板子 有很多名单 有很多卡
有很多评论


有很多用户
有很多名单 有很多卡

列表
属于董事会 有很多卡


属于董事会 属于列表
有很多评论

注释
属于卡
属于用户

3 个答案:

答案 0 :(得分:2)

class User < ActiveRecord::Base
  has_and_belongs_to_many :boards
  has_many :lists, as: listable
  has_many :cards, as: cardable
  has_may :comments, as: commentable
end

class Board < ActiveRecord::Base
  has_and_belongs_to_many :users
  has_many :lists,  as: listable
  has_many :cards,  as: cardable
end

class Comment < ActiveRecord::Base
  belongs_to :commentable, :polymorphic => true
end

class List < ActiveRecord::Base
  belongs_to :listable, :polymorphic => true
  has_many :cards, as: cardable
end

class Card < ActiveRecord::Base
  belongs_to :cardable, :polymorphic => true
  has_many :comments, as:commentable
end

要建立HABTM关系,您必须创建一个名为“users_boards”的表

答案 1 :(得分:0)

由于董事会和用户之间存在多对多的关系,因此会有一个新的表格,如果你想要HABTM就可以使用它。

用户(id,name,other_attributes ...)

董事会(身份证,姓名,......)

列表(id,name,user_id(fk),...)

卡(id,name,user_id(fk),list_id(fk),board_id(fk),...)

评论(id,comment_msg,user_id(fk),card_id(fk),...)

Board_User(board_id(fk),user_if(fk))--- M-M关系

如果存在has_many through关系,则很少有属性可能会改变。

FK--外键,你可以根据你的要求使用has_many。

答案 2 :(得分:0)

使用多态关联有一些限制,所以请通过它然后决定使用多态关联

http://codeblow.com/questions/pros-and-cons-for-ruby-on-rails-polymorphic-associations/