我是Rails的新手。 非常感谢您查看我的问题。
我想要做的是提取按start_date和end_date排序和分组的数据。
型号:
class CreateUserMedicines < ActiveRecord::Migration
def change
create_table :user_medicines do |t|
t.references :user, index: true, foreign_key: true, null: false
t.references :medicine, index: true, foreign_key: true, null: false
t.date :course_start, null: false
t.date :course_end, null: false
end
add_index :user_medicines, [:user_id, :medicine_id]
end
end
预期视图,因为每个用户都是这样的。
+---+------------+-------------+------------+
| | start_date | end_date | Medicines |
+---+------------+-------------+------------+
| 1 | 2016/09/11 | 2016/10/01 | A, B, C |
| 2 | 2016/09/11 | 2016/09/18 | D, E |
| 3 | 2016/09/19 | 2016/09/26 | F |
+---+------------+-------------+------------+
作为每种药(A,B,C),我想获得药品名称和ID以添加链接。
为此,我如何编写控制器和模型功能?
[编辑:] 我想要的结果:
{ [ Sun, 11 Sep 2016, Sun, 17 Sep 2016 ]=> [#<UserMedicine:0x007f82c291722>, #<UserMedicine:0x007f82c291349>]
当前代码和结果:
record:
@user.user_medicines.group_by(&:course_start)
result:
{ [ Sun, 11 Sep 2016 ]=> [#<UserMedicine:0x007f82c291722>, #<UserMedicine:0x007f82c291349>]
任何答案都将受到高度赞赏。
答案 0 :(得分:1)
您希望将块传递给group_by
并从块中返回一个数组
@user.user_medicines.group_by { |m| [m.course_start, m.course_end] }