Ruby on rails 将同一模型类中的两列关联到另一模型中的同一列-Rails
快速问题-我有两个模型类-交易和账户 帐户模型如下所示:Ruby on rails 将同一模型类中的两列关联到另一模型中的同一列-Rails,ruby-on-rails,Ruby On Rails,快速问题-我有两个模型类-交易和账户 帐户模型如下所示: create_table "accounts", force: :cascade do |t| t.string "account_name" t.integer "account_number" t.boolean "current_asset" t.boolean "non_current_asset" t.boolean "current_liability" t.boo
create_table "accounts", force: :cascade do |t|
t.string "account_name"
t.integer "account_number"
t.boolean "current_asset"
t.boolean "non_current_asset"
t.boolean "current_liability"
t.boolean "non_current_liability"
t.boolean "equity"
t.boolean "cost_of_sales"
t.boolean "operating_expense"
t.boolean "sales"
t.boolean "other_income"
t.boolean "bank"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "user_id"
end
create_table "transactions", force: :cascade do |t|
t.date "date"
t.string "description"
t.string "reference"
t.integer "amount"
t.integer "account_id"
t.boolean "payment"
t.boolean "receipt"
t.integer "bank_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "user_id"
t.boolean "vat"
t.integer "vat_amount"
t.integer "transaction_form_id"
t.integer "contact_id"
end
事务模型如下所示:
create_table "accounts", force: :cascade do |t|
t.string "account_name"
t.integer "account_number"
t.boolean "current_asset"
t.boolean "non_current_asset"
t.boolean "current_liability"
t.boolean "non_current_liability"
t.boolean "equity"
t.boolean "cost_of_sales"
t.boolean "operating_expense"
t.boolean "sales"
t.boolean "other_income"
t.boolean "bank"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "user_id"
end
create_table "transactions", force: :cascade do |t|
t.date "date"
t.string "description"
t.string "reference"
t.integer "amount"
t.integer "account_id"
t.boolean "payment"
t.boolean "receipt"
t.integer "bank_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer "user_id"
t.boolean "vat"
t.integer "vat_amount"
t.integer "transaction_form_id"
t.integer "contact_id"
end
用户添加一个新的事务,通过集合选择
他们需要选择一个帐户,该帐户显示除银行==true(其中bank==true
表示银行帐户)以外的所有帐户
当用户选择银行时,他们只能选择银行帐户-其中Bank==true
(再次通过收款选择)
我需要运行一个方法,允许我根据银行id而不是账户id通过账户模型调用所有交易金额。因此,我如何通过账户id或银行id将交易模型的两个不同列关联到Accounts类中的同一列
该方法将类似于:
<% Account.each do |account| %>
<% if account.bank == true && account.transaction(:bank_id) == account.id %>
<%= account.number %>
<%= account.number %>
<%= account.transactions.sum(:amount) %>
<% end %>
class BankAccount < ActiveRecord::Base
has_many :transactions, as: :account
end
class Account < ActiveRecord::Base
has_many bank_transactions, class_name: 'Transaction', foreign_key: :bank_id
end
Ps:我知道这是我的观点,不是控制器,但这是另一个讨论
我建议你后退一步,重新考虑你的方法 银行账户和总账账户是非常不同的东西(尽管它们都使用“账户”一词)。使用单个模型来表示这两个字段将导致混乱和大量空字段。考虑使用<代码>银行帐户< /代码>和<代码> GLAccount < /代码>(您可以使用自定义<代码>拐点<代码> <代码> GLAccount <代码>,如果您愿意,那么您可以做<代码> GLYAcIGN//C> > 如果您使用
BankAccount
和GLAccount
,那么您只需在交易
模型上进行多态关联,例如:
class Transaction < ActiveRecord::Base
belongs_to :account, polymorphic: true
end
<% BankAccount.all.each do |bank_account| %>
<%= bank_account.number %>
<%= bank_account.transactions.sum(:amount) %>
<% end %>
class GLAccount < ActiveRecord::Base
has_many :transactions, as: :account
enum account_type: {
current_asset: 0,
non_current_asset: 1,
current_liability: 2,
non_current_liability: 3,
equity: 4,
cost_of_sales: 5,
operating_expense: 6,
sales: 7,
other_income: 8
}
end
及
您的gl\u账户
表需要将account\u类型
作为一个整数包含在内,这样才能起作用
其他几个随机音符:
应该是if account.bank==true
if account.bank
- 重复
<% Account.each do |account| %>
<% if account.bank == true && account.transaction(:bank_id) == account.id %>
<%= account.number %>
<%= account.number %>
<%= account.transactions.sum(:amount) %>
<% end %>
class BankAccount < ActiveRecord::Base
has_many :transactions, as: :account
end
class Account < ActiveRecord::Base
has_many bank_transactions, class_name: 'Transaction', foreign_key: :bank_id
end
类帐户
在这种情况下,您应该能够:
<% Account.where(bank: true).each do |bank_account| %>
<%= bank_account.number %>
<%= bank_account.bank_transactions.sum(:amount) %>
<% end %>
能否将这两种型号的代码张贴在描述它们之间关系的地方?(属于/有很多)我不能告诉你我从这个答案中学到了多少!我对这一切都很陌生,非常感谢这样的回答!伟大的请随时为未来的搜索者投票/接受。从外观上看,您知道您对会计系统及其结构的看法,是否有任何与此相关的资源建议?如果这超出了问题和论坛的范围,我深表歉意。是的,我在使用、配置和集成会计系统方面有很多经验。你想要什么样的资源?有关于使用rails的会计/企业系统的阅读材料吗?我有会计背景,但软件方面的事情显然有点棘手!