1

我有一个名为 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}

4

0 回答 0