Mar*_*enn 0 ruby-on-rails ruby-on-rails-5
我正在构建一个Rails 5应用程序。在这个应用程序中,我得到了一个用户模型和一个订阅模型。我希望能够获得所有拥有有效订阅的用户。
用户
has_one:订阅
- id,
- name
- email
Run Code Online (Sandbox Code Playgroud)
订阅
当属:用户
- id
- user_id
- title
- active (boolean)
Run Code Online (Sandbox Code Playgroud)
我需要能够进行如下查询(如下)。换句话说,我需要找到所有不仅获得订阅而且还将active属性设置为true的用户。
User.with_active_subscriptions
Run Code Online (Sandbox Code Playgroud)
我想我可能需要做一个示波器,但不知道如何做。
小智 5
我建议您先在Subscription模型中编写一个作用域:
scope :active, ->{ where(active: true) }
Run Code Online (Sandbox Code Playgroud)
然后,您可以在用户类中使用上述范围。
scope : with_active_subscriptions, ->{ joins(:subscription).merge(Subscription.active) }
Run Code Online (Sandbox Code Playgroud)
我更喜欢这种编写代码的方式,因为它active是Subscription类的属性。用户类不必关心这一点。这样,您的代码将得到更好的结构,并且如果您需要更改活动范围的功能,则只需在一个地方完成即可。
| 归档时间: |
|
| 查看次数: |
43 次 |
| 最近记录: |