Rails JSON API:限制与current_user的has_many关系

时间:2016-06-05 11:56:28

标签: mysql ruby-on-rails activerecord

我有一个带有2个模型的rails json API(BagsItems)。我正在使用MySQL的活动记录序列化程序来组织json输出。我想为所有用户显示所有Bags,但仅为当前用户显示Items

寻找这样的事情:

class Bag < ActiveRecord::Base
  has_many :items,-> {where current_user: "#{current_user.id}"},class_name: 'Items'
end

我不知道将current_user.id属性传递给模型的方法。希望有人知道。

1 个答案:

答案 0 :(得分:0)

两件事:

  1. 您无法直接在模型中访问控制器和辅助方法。您需要将它们传递给您的模型。一种简单的方法是添加方法或范围。
  2. 关联查询自定义不支持支持传递到块(-> {where current_user: ...)的参数。所以,你不能在联合声明中这样做。
  3. 所以,我想你必须添加一个范围:

    class Bag < ActiveRecord::Base
      has_many :items
      scope :user_items, ->(user) { where(items: {current_user: user}) }
    end
    

    PS。您无需将"#{current_user.id}"转换为字符串。