也许我接近这一切都错了,我有以下模型设置:
User
模型有很多Questions
,Question
belongs_to a User
这意味着我可以轻松地执行:u = User.last.questions
并查看与上次添加的用户相关的所有问题。
在此之后,我有Payment
模型属于Question
。 Question
has_one payment
意味着我可以轻松地u = User.last.questions.last.payment
,从最后添加的用户最后添加的问题中获取付款详细信息(也许是daft示例!)。
现在让我困惑的是
我有一个名为PaymentOption
的模型,用于填充下拉列表,价格不同,PaymentOption
belongs_to a Payment
和Payment
has_one {{ 1}}
这一切都正常,但我找到付款方式详情的唯一方法,例如金额,就是做这样的事情:
PaymentOption
理想情况下,我会这样做:
payment_amount = PaymentOption.find(User.last.questions.last.payment.payment_option_id).amount
通过我的方式进行,它可以做两个单独的查询,一个用于获取付款选项ID,另一个用于查找与该特定付款选项相关的详细信息。当然有更好的方法来解决这个问题吗?
提前致谢
编辑1
为了澄清我的回答,我已经包含了Payments和PaymentOptions的架构
amount = User.last.questions.last.payment.payment_option.amount
答案 0 :(得分:1)
我认为这是你的问题:
我有一个名为PaymentOption的模型,用于填充drop 下拉列表,对于不同的价格,PaymentOption属于a 付款和付款has_one PaymentOption
您说您已设置Payment
has_one PaymentOption
和PaymentOption
belongs_to Payment
。但是在最后描述的模式Payment
中有一个payment_option_id
。
在这种情况下,Payment
属于PaymenteOption
,而不是相反。请参阅Rails指南中的this example。 Account
已supplier_id
,因此Supplier
有一个Account
和Account belongs_to
供应商。
你的模特应该是这样的:
class Payment < ActiveRecord::Base
belongs_to :payment_option
end
class PaymentOption < ActiveRecord::Base
has_one :payment # Or even has_many :payments
end