目前,我正在通过此行<{1}}获取所有记录
database
在
的某些地方@share_requests = CameraShareRequest.all.includes(:user, :camera).decorate
没有<tr>
<td><%= camera_share_request.email %></td>
<td><%= link_to camera_share_request.camera.name, camera_path(camera_share_request.camera) %></td>
<td><%= link_to camera_share_request.user.fullname, user_path(camera_share_request.user) %></td>
<td><%= camera_share_request.message %></td>
<td><%= camera_share_request.share_rights %></td>
<td><%= camera_share_request.user_status %></td>
<td><%= camera_share_request.share_created_at %></td>
</tr>
的几个条目我想从我的camera_share_request.camera or user
对象中跳过这些条目,我怎么可能尝试用@share_requests
但是失败了...
答案 0 :(得分:0)
您可以使用.not
取消.where
并忽略没有相机或用户的记录:
CameraShareRequest.where.not(user_id: nil, camera_id: nil).includes(:user, :camera).decorate
这将导致SQL看起来像:
SELECT "camera_share_requests".* FROM "camera_share_requests" WHERE ("camera_share_requests"."user_id" IS NOT NULL) AND ("camera_share_requests"."camera_id" IS NOT NULL)
如果user_id
或camera_id
可能存在,但User
或Camera
已被删除,则可以在打印表格时跳过这些记录:
@share_requests.each do |share_request|
next unless share_request.user && share_request.camera
# Print row
end
答案 1 :(得分:0)
一种方法是:
@share_requests = CameraShareRequest.joins( :user, :camera ).decorate