rails中的特定模型关联案例
Specific model association case in rails
我有 3 个表:提案、items/proposals(项目嵌套在提案中)和发票。
我想为获得批准的提案中的那些项目创建发票。这些关联看起来如何?另外,我如何设置发票表格以仅选择客户批准的项目?
考虑为提案和发票创建两个不同的订单项模型。
class Proposal < ActiveRecord::Base
has_many :proposal_line_items
end
class ProposalLineItem < ActiveRecord::Base
belongs_to :proposal
end
class Invoice < ActiveRecord::Base
has_many :invoice_line_items
end
class InvoiceLineItem < ActiveRecord::Base
belongs_to :invoice
end
您可以考虑在提案订单项中使用 "approved" 属性。在发票表格中,您可以显示客户批准的提案行项目。
提案和发票具有单独行项目的建议基于 ERP 数据建模原则,以保持发票的完整性。
更新
例如,这里是建议的模型的示例迁移
class CreateProposalLineItems < ActiveRecord::Migration
def change
create_table :proposal_line_items do |t|
t.references :proposal, index: true, foreign_key: true
t.string :name
t.integer :approved
t.timestamps null: false
end
end
end
class CreateProposals < ActiveRecord::Migration
def change
create_table :proposals do |t|
t.string :name
t.timestamps null: false
end
end
end
class InvoicesController < ActionController
def new
@approved_items = Proposal.find(params[:proposal_id]).proposal_line_items.where(:approved => 1)
end
end
您可以在视图中遍历 @approved_items 并将其显示给用户。
V
我有 3 个表:提案、items/proposals(项目嵌套在提案中)和发票。
我想为获得批准的提案中的那些项目创建发票。这些关联看起来如何?另外,我如何设置发票表格以仅选择客户批准的项目?
考虑为提案和发票创建两个不同的订单项模型。
class Proposal < ActiveRecord::Base
has_many :proposal_line_items
end
class ProposalLineItem < ActiveRecord::Base
belongs_to :proposal
end
class Invoice < ActiveRecord::Base
has_many :invoice_line_items
end
class InvoiceLineItem < ActiveRecord::Base
belongs_to :invoice
end
您可以考虑在提案订单项中使用 "approved" 属性。在发票表格中,您可以显示客户批准的提案行项目。
提案和发票具有单独行项目的建议基于 ERP 数据建模原则,以保持发票的完整性。
更新
例如,这里是建议的模型的示例迁移
class CreateProposalLineItems < ActiveRecord::Migration
def change
create_table :proposal_line_items do |t|
t.references :proposal, index: true, foreign_key: true
t.string :name
t.integer :approved
t.timestamps null: false
end
end
end
class CreateProposals < ActiveRecord::Migration
def change
create_table :proposals do |t|
t.string :name
t.timestamps null: false
end
end
end
class InvoicesController < ActionController
def new
@approved_items = Proposal.find(params[:proposal_id]).proposal_line_items.where(:approved => 1)
end
end
您可以在视图中遍历 @approved_items 并将其显示给用户。
V