gpt4 book ai didi

ruby-on-rails - 按在 Postgresql 和 Ruby On Rails 中创建的顺序显示连接记录数据

转载 作者:行者123 更新时间:2023-11-29 14:21:31 25 4
gpt4 key购买 nike

我在 postgresql 数据库中有三个表:

  1. 成员

    • 编号
    • 名字
    • 姓氏
    • 创建于
  2. 付款(如借记)

    • 编号
    • 成员(member)编号
    • 数量
    • 创建于
    • 输入
  3. 费用(如学分)

    • 编号
    • 成员(member)编号
    • 数量
    • 创建于
    • 输入

我想在单一 View 中显示它们,比如帐单:我使用了以下查询:

select * from members as t1 left join payments as t2 on (t1.id=t2.member_id) left join fees as t3 on (t1.id=t3.member_id) 

它显示了以下结果:

id | Amount | created_at | Type
1 100 25-12-2013 Fee
2 100 29-12-2013 Fee
3 100 25-12-2013 Payment
4 100 23-12-2013 Payment

但问题是它首先显示费用记录,然后在我需要时显示付款,它应该由 created_at 订购,它应该如下所示:

id | Amount | created_at | Type
1 100 23-12-2013 Payment
2 100 25-12-2013 Fee
3 100 25-12-2013 Payment
4 100 29-12-2013 Fee

这里是模型的详细信息:

class Fee < ActiveRecord::Base

# Setup accessible (or protected) attributes for your model
attr_accessible :member_id,:fee_type,:amount,:reason,:details,:date

# Setup relations with relative models
belongs_to :member

# Validates rule here
validates_numericality_of :member_id,:fee_type,:amount

validates :reason,
:format => {:with => /^[-a-zA-Z0-9_ ]+$/ },
:length => {:maximum => 255},
:presence =>true
validates :details,
:format => {:with => /^[-a-zA-Z0-9_ ]+$/ },
:length => {:maximum => 255},
:allow_blank =>true
validates :amount,
:presence => true
validates :member_id,
:presence => true
validates :date,
:presence => true

# Search start here
self.per_page = 10

end

class Payment < ActiveRecord::Base

# Setup accessible (or protected) attributes for your model
attr_accessible :member_id,:payment_category_id,:payment_type_id,:payment_date,:amount,:notes,:is_send_email,:last_sent,:date_deposite
# Setup relations with relative models
belongs_to :payment_type
belongs_to :payment_category
belongs_to :member

# Validates rule here
validates_numericality_of :member_id,:payment_category_id,:payment_type_id,:amount

validates :notes,
:format => {:with => /^[-a-zA-Z0-9_ ]+$/ },
:length => {:maximum => 255},
:allow_blank =>true
validates :amount,
:presence => true,
:length => {:maximum => 15}
validates :member_id,
:presence => true
validates :payment_date,
:presence => true

# Pagiination start here
self.per_page = 10

end

class Member < ActiveRecord::Base

has_many :payment, dependent: :destroy, -> { order :created_at }
has_many :fee, dependent: :destroy, -> { order :created_at }
has_many :events, :through => :participants

end

最佳答案

如果我是你,我会使用 ActiveRecord Associations像这样:

#app/models/member.rb
Class Member < ActiveRecord::Base
has_many :payments, -> { order :created_at }
has_many :fees, -> { order :created_at }
end

#app/models/payment.rb
Class Payment < ActiveRecord::Base
belongs_to :member
end

#app/models/fee.rb
Class Fee < ActiveRecord::Base
belongs_to :member
end

应该让您能够按顺序提取所需的关联数据,如下所示:

@member = Member.find 1
@member.payments #-> should be ordered by created_at

关于ruby-on-rails - 按在 Postgresql 和 Ruby On Rails 中创建的顺序显示连接记录数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24360627/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com