0

我正在考虑使用“has_many:through”创建以下模型:

class Contract < AR::Base
  has_many :clientlines
  has_many :codelines
  has_many :clients, :through => :clientlines
  has_many :codes, :through => :codelines
end

class clientlines < AR::Base
  belongs_to :contract
  belongs_to :client
end

class Client < AR::Base
  has_many :clientlines
  has_many :contracts, :through => :clientlines
end

class codeline < AR::Base
  belongs_to :contract
  belongs_to :code
  units_alloc -------**I would like to add this attribute after this intermediate
 end                 has been created?

class Code < AR::Base
  has_many :codelines
  has_many :contracts, :through => :codelines
end

例如,我是否首先使用“rails generate model Contract authnum:string, client_id:integer, st_date:date, end_date:date”创建模型。然后在迁移之前填写所有关联?

另外,我的理解是,在使用 has_many :through 关联时,所有连接表都是由 rails 自动创建的。什么时候发生?

最后,如 ** 所示,我可以在代码行中使用此属性吗?我是否可以创建一个“rails generate migration add_units_alloc_to_codelines units_alloc:number”以便将此属性添加到连接表中?我还想知道如何将数字声明为小数点后两位?

如果您有时间和意愿,您能否评论一下我为我的数据库提出的设计?

谢谢。

4

1 回答 1

0
  1. 通过使用has_many :through您使用在其他两个模型之间建立连接的第三个模型,因此 rails 不会自动构建该模型,您自己构建它并引用其他两个模型的外键。

  2. 不要用复数来命名你的模型,总是单数。如果你不能用单数命名它们,那你就错了

  3. 创建模型的顺序应该不太重要 rails 会生成一些迁移,您可以稍后轻松修改)

  4. 那个units_alloc属性,在创建的时候添加到模型中,就这么简单!

  5. 对于 2 位小数,请在迁移中使用类似的东西t.decimal :amount, :precision => 6, :scale => 2(该示例为您提供 6 位和 2 位小数)

  6. 阅读Rails 指南,它真的会帮助你摆脱很多麻烦

于 2012-02-24T19:52:51.410 回答