我有一个名为 Entry 的模型,它有很多:entry_states。EntryState 有一个名为 :read 的属性。
无论是否有 entry_state,我都想获取所有条目,所以我认为 LEFT OUTER JOIN 是在 Coding Horror 上查看左外连接的最佳方式
但是,我还想在结果中包含一个 EntryState 属性。所以我有一个看起来像这样的查询:
entries = Entry.select('entries.*, entry_states.read').
joins("LEFT OUTER JOIN entry_states ON entries.id = entry_states.entry_id AND entry_states.user_id = #{user_id}")
这个问题是 entry_states 对象在此之后不可用。
我可以获得如下读取状态:
entries.first.read
>> t
true
这给了我原始列值,但这是一个布尔列,因此返回或返回会很棒false
如果我能得到整个 EntryState 对象,那就更好了。我试过使用 .includes(:entry_state),但我还没有找到一种方法来包含外部连接条件AND entry_states.user_id = #{user_id}