我希望user
能够创建并保存或选择要添加到发票中的现有client
。每张发票只能有一个client
。
我目前有3个模型users
invoices
和items
我目前正在使用简单的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 :clients
到users
,将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
这会有用吗?还有更好的方法吗?
答案 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