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