Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails:如何在两个表之间搜索?_Ruby On Rails - Fatal编程技术网

Ruby on rails RubyonRails:如何在两个表之间搜索?

Ruby on rails RubyonRails:如何在两个表之间搜索?,ruby-on-rails,Ruby On Rails,我想我首先应该使用:include,但是我得到一个错误,告诉我地址表中的所有列都不存在——可能是因为它仍然不知道地址表,并且仍然在检查users表 搜索代码: search = params[:search] conditions = "real_name LIKE '%#{search}%' OR login LIKE '%#{search}%' OR email LIKE '%#{search}%'" address_conditions = "number LIKE '%#

我想我首先应该使用:include,但是我得到一个错误,告诉我地址表中的所有列都不存在——可能是因为它仍然不知道地址表,并且仍然在检查users表

搜索代码:

search = params[:search]
    conditions = "real_name LIKE '%#{search}%' OR login LIKE '%#{search}%' OR email LIKE '%#{search}%'"
    address_conditions = "number LIKE '%#{search}%' OR street LIKE '%#{search}%' OR city LIKE '%#{search}%' OR state LIKE '%#{search}%' OR zip_code LIKE '%#{search}%'" 
    conditions = conditions + " OR " + address_conditions
    @paid = User.find(:all, :include => :addresses, :conditions => "has_paid = 't' AND (#{conditions})")
编辑:将:include更改为:joins,我收到以下错误:

SQLite3::SQLException: no such column: number: 
         SELECT * FROM "users" 
         WHERE (has_paid != 't' AND 
                     (real_name LIKE '%12%' OR login LIKE '%12%' OR email LIKE '%12%' OR
                      number LIKE '%12%' OR street LIKE '%12%' OR city LIKE '%12%' OR
                      state LIKE '%12%' OR zip_code LIKE '%12%'))

尝试:联接而不是:包含


还要检查log/development.log所有sql都记录在那里

尝试:连接而不是:包括


还要检查log/development.log所有sql都记录在那里

正如@house9所说,您需要使用
:joins
,但您还需要在查询中的地址字段上使用表名。因此,您需要的不是像“%{search}%”这样的
“名称”…“
”,而是像“%{search}%”这样的
“地址.名称”…“
,等等。为了清楚起见,您可能希望向用户字段添加
用户。
,但这是在构建查询的方式中隐含的


在这些情况下,您应该尝试直接在数据库上运行查询。如果它仍然抛出错误(这会发生),那么您知道这是您的查询,而不是您的ruby。

正如@house9所说,您需要使用
:joins
,但您还需要在查询中的地址字段上使用表名。因此,您需要的不是像“%{search}%”这样的
“名称”…“
”,而是像“%{search}%”这样的
“地址.名称”…“
,等等。为了清楚起见,您可能希望向用户字段添加
用户。
,但这是在构建查询的方式中隐含的


在这些情况下,您应该尝试直接在数据库上运行查询。如果它仍然抛出错误,那么(这将是),您知道这是您的查询,而不是您的ruby。

我仍然得到相同的错误。将SQL控制台输出发布到问题。我仍然收到相同的错误。将SQL控制台输出发布到问题。