如何正确设置模型关联

时间:2016-03-08 07:00:02

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

我希望user能够创建并保存或选择要添加到发票中的现有client。每张发票只能有一个client

我目前有3个模型users invoicesitems 我目前正在使用简单的has_many关系,但我现在感到困惑,因为我想添加一个新表clients。我希望能得到一些关于使用什么关联的建议。

我目前的协会

class User < ActiveRecord::Base
has_many :invoices

class Invoice < ActiveRecord::Base
belongs_to :user
has_many :items, :dependent => :destroy

class Item < ActiveRecord::Base
belongs_to :invoice

所以我想做一些简单的事情,比如添加has_many :clientsusers,将has_one :client添加到invoices并添加表clients

class User < ActiveRecord::Base
has_many :invoices
has_many :clients

class Client < ActiveRecord::Base
belongs_to : user

class Invoice < ActiveRecord::Base
belongs_to :user
has_many :items, :dependent => :destroy
has_one :client

这会有用吗?还有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您很少使用has_one。在您的情况下,以下模型更有意义:

class User < ActiveRecord::Base
  has_many :invoices
end

class Invoice < ActiveRecord::Base
  belongs_to :user
  belongs_to :client
  has_many :items, :dependent => :destroy
end

class Item < ActiveRecord::Base
  belongs_to :invoice
end

class Client < ActiveRecord::Base
  has_many :invoices
  has_many :items, through: :invoices
end