Ruby on rails Rails对象关系

Ruby on rails Rails对象关系,ruby-on-rails,orm,Ruby On Rails,Orm,比如说,我有一个Rails应用程序,每个使用它的人都是正方形。大多数人只是正方形,但有些人可以同时充当正方形和三角形。 三角形比正方形具有不同(更多)的属性,例如不同长度的边、三角形的类型等。 在阅读了之后,我不确定我是否应该这样做 创建联接表,或 只要有几个默认为nil的额外属性,除非用户能够充当三角形 如果我创建了一个连接表,我会只创建可连接正方形上三角形的连接吗? 七月四日快乐 如果我正确地理解了你的问题,你真的不需要一种通过建立的关系 我建议这样设置: 使用者 方格 has_many

比如说,我有一个Rails应用程序,每个使用它的人都是正方形。大多数人只是正方形,但有些人可以同时充当正方形和三角形。
三角形比正方形具有不同(更多)的属性,例如不同长度的边、三角形的类型等。 在阅读了<代码>之后,我不确定我是否应该这样做

  • 创建联接表,或

  • 只要有几个默认为nil的额外属性,除非用户能够充当三角形

如果我创建了一个连接表,我会只创建可连接正方形上三角形的连接吗?

七月四日快乐

如果我正确地理解了你的问题,你真的不需要一种通过建立的关系

我建议这样设置:

使用者

方格

has_many :users
三角形

has_many :users
这些关联需要用户表上的外键

STI

关于比灵顿的评论,你可能想看看-

您应该考虑以下几点:

  • 您希望保留一个(单个数据库表)
  • 你想考虑特定形状在系统中的作用(你将如何调用正方形/三角形)
  • 不同的元素是如何影响系统的(你是直接称之为三角形,还是间接称之为三角形)

我想你想要的是,我想你只需要Shape类中的
有很多:用户,因为其他用户继承了这个类,并且将具有相同的行为!现在将会改变
has_many :users
#app/models/shape.rb
Class Shape < ActiveRecord::Base
    has_many :users
end

#app/models/user/triangle.rb
Class Triangle < Shape
end

#app/models/users/square.rb
Class Square < Shape
end
#app/models/user.rb
Class User < ActiveRecord::Base
   belongs_to :shape
   delegate :type, to: :shape, prefix: true #-> allows you to call @user.shape_type
end
@triangles = Triangle.all
@trianbles.each do |triangle|
    triangle.user.name
end