应用程序/模型/ user.rb
has_one :user_detail
应用程序/模型/ user_detail.rb belongs_to:user
当我查询
时User.active.
select('users.id, users.first_name, users.last_name,user_details.unit_number').
joins('LEFT JOIN user_details ON users.id = user_details.user_id').
where(:property_id => params[:id])
它只提供用户模型列,而不是user_details.unit_number
。我怎么得到这个?
我这样做
users = User.active.select('users.id, users.first_name, users.last_name, user_details.unit_number').joins('LEFT JOIN user_details ON users.id = user_details.user_id').where(:property_id => params[:id])
users_list = users.as_json(:only => [:id, :first_name, :last_name, :unit_number)
答案 0 :(得分:2)
使用select
,您已经删除了ActiveRecord对象,尤其是它们已不再与您的user_detail
您可以在user_detail
声明
user
,在as
个对象中提供select
attributs
User.active.
select('users.id, users.first_name, users.last_name, user_details.unit_number as unit_number').
joins('LEFT JOIN user_details ON users.id = user_details.user_id').
where(:property_id => params[:id])
然后你应该能够访问信息,就像它是用户的正常属性(而不是user_detail)
答案 1 :(得分:0)
我会使用内置的Rails工具(在这种情况下为includes
):
users = User.active.includes(:user_detail).where(property_id: params[:id])
现在你可以打电话,例如:
users.first.user_detail.unit_number
并保证您没有N + 1问题