为什么Model.where(id:4)与Model.where(:id == 4)不同?

时间:2014-04-02 22:38:46

标签: ruby activerecord

在rails控制台中输入

@draft_variables = DraftVariable.where(draft_id: params[:id].to_i)

在输入

时返回所有具有匹配ID的行
@draft_variables = DraftVariable.where(:draft_id == params[:id].to_i)

返回具有任何ID的所有行。

这是为什么?我在Rails 4.1,ruby 2.1.0。

1 个答案:

答案 0 :(得分:3)

以下声明

@draft_variables = DraftVariable.where(:draft_id == params[:id].to_i)

评估为

@draft_variables = DraftVariable.where(false)

反过来导致查询

SELECT `draft_variables`.* FROM `draft_variables`

所以它返回所有记录