【发布时间】:2017-04-25 17:39:54
【问题描述】:
我有三个使用 Active Record 关联的模型:
Book Model
has_many :checkouts
User Model
has_many :checkouts
Checkout Model
belongs_to :book
belongs_to :user
在我看来,我需要图书、结帐和结帐中的用户名。
通过使用Book.first.checkouts 我得到:
#<ActiveRecord::AssociationRelation
[#<Checkout id: 30,
checkout_date: "2017-04-13",
return_date: nil,
book_id: 118,
user_id: 1,
created_at: "2017-04-13 17:43:07",
updated_at: "2017-04-13 17:43:07"
>,#<Checkout id: 50,
checkout_date: "2017-04-13",
return_date: nil,
book_id: 118,
user_id: 1,
created_at: "2017-04-14 00:33:34",
updated_at: "2017-04-14 00:33:34">
]>
但是,我想要用户名,而不仅仅是 id。我试过Book.first.checkouts.map { |c| c.user.name },但只返回名称,我需要其余的结帐信息。理想情况下,我的数据(转换为 json)看起来像:
{
name: "Book Name",
checkouts: [
checkout_data: "Today",
user_name: "Mary"
]
}
如何将用户名添加到我的结帐数据中?
【问题讨论】:
-
您是否单独显示结帐,即
.each循环?你应该可以显示checkout.user.name -
@Okomikeruko 是的,单独通过每个循环。
checkout.user.name有效,但它只返回用户名。我需要结帐和用户名。我想知道是否可以将它添加到虚拟属性或类似的东西。 -
我想我正在尝试合并 2 个对象的数据:
checkouts和user -
你是说你想让
checkout.username做和checkout.user.name一样的事情吗? -
如果目标是优化您的 JSON 输出,该线程对此有一些答案:stackoverflow.com/questions/13678092/…
标签: ruby-on-rails ruby activerecord associations