铁轨3; ActiveRecord的;哪里;数据库中两列之间的NOT EQUAL条件比较

时间:2011-09-30 19:26:49

标签: mysql ruby-on-rails ruby-on-rails-3

是否有某种方法可以使用 where 来比较数据库中的两列?

说,我有两列用户,告诉:

  1. city_of_birth
  2. favourite_city
  3. 我想要一个与city_of_birth不同的favourite_city用户列表。

    我希望这样的事情会奏效。

    @users = User.where(
      :city_of_birth != :favourite_city
    ).all
    

    运行此结果

    undefined method `where' for nil:NilClass
    

    关于使用 where 的条件语句,有类似的问题,但没有一个是关于数据库本身中的列的条件语句。

    提前感谢您的帮助。

2 个答案:

答案 0 :(得分:8)

错误与未定义的常量用户有关,但是要回答关于where方法的问题...

:city_of_birth != :favourite_city

这将永远是真的,所以你实际上在这样的地方打电话......

User.where(true)

这恐怕没什么用。我想你可能会对可以使用的哈希条件语法感到困惑。这对你也没有多大用处。你需要使用像这样的字符串条件...

User.where('users.city_of_birth != users. favourite_city')

这实际上只是一小段SQL,最终将包含在发送到数据库的最终语句中。

答案 1 :(得分:3)

此错误表明未定义User - 您的类名错误,或者未加载到您的环境中。