我的应用有5个核心型号。我试图找出关联模型的最佳方法。我应该建立多少个表,哪个等等?
以下是我想要包含的关联及其各自的模型:
用户
有很多板子
有很多名单
有很多卡
有很多评论
板
有很多用户
有很多名单
有很多卡
列表
属于董事会
有很多卡
卡
属于董事会
属于列表
有很多评论
注释
属于卡
属于用户
答案 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/