Rails4:通过关联限制字段选择
Rails 4: Limit field selection through association
我知道您可以通过以下方式限制 Rails 查询中的返回字段:
c = Client.select(:id, :user_id, :location_id).where(name: "John Doe")
=> #<ActiveRecord::Relation [#<Client id: 349, user_id: 348, location_id: 2>]>
但如果只能通过关联访问模型,如何实现呢? (在本例中 Client
belongs_to :user
)
User.find_by(email: "johndoe@email.com").client # I only want the 3 fields above
例如,您可以使用范围而不是关联方法来做到这一点:
Client.select(:id, :user_id, :location_id)
.find_by(user_id: User.find_by(email: 'johndoe@email.com').id)
甚至更好,加入 user
并直接在 users.email 列上查询:
Client.select(:id, :user_id, :location_id)
.joins(:user).find_by(users: { email: 'johndoe@email.com' })
我知道您可以通过以下方式限制 Rails 查询中的返回字段:
c = Client.select(:id, :user_id, :location_id).where(name: "John Doe")
=> #<ActiveRecord::Relation [#<Client id: 349, user_id: 348, location_id: 2>]>
但如果只能通过关联访问模型,如何实现呢? (在本例中 Client
belongs_to :user
)
User.find_by(email: "johndoe@email.com").client # I only want the 3 fields above
例如,您可以使用范围而不是关联方法来做到这一点:
Client.select(:id, :user_id, :location_id)
.find_by(user_id: User.find_by(email: 'johndoe@email.com').id)
甚至更好,加入 user
并直接在 users.email 列上查询:
Client.select(:id, :user_id, :location_id)
.joins(:user).find_by(users: { email: 'johndoe@email.com' })