Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.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
Mysql rails模型和ActiveRecord查询之间的关联_Mysql_Ruby On Rails_Ruby_Activerecord_Models - Fatal编程技术网

Mysql rails模型和ActiveRecord查询之间的关联

Mysql rails模型和ActiveRecord查询之间的关联,mysql,ruby-on-rails,ruby,activerecord,models,Mysql,Ruby On Rails,Ruby,Activerecord,Models,我试图找到所有由比变量min_age更老的用户创建的资产。目前,我正在尝试使用此电话: assets = Asset.joins(:user).where("age(users.handles.first.birthday) >= ?", min_age) 每个资源都有一个用户,每个用户可以有多个句柄 class User < ActiveRecord::Base has_many :handles, :class_name => "UserHandle" def g

我试图找到所有由比变量min_age更老的用户创建的资产。目前,我正在尝试使用此电话:

assets = Asset.joins(:user).where("age(users.handles.first.birthday) >= ?", min_age)
每个资源都有一个用户,每个用户可以有多个句柄

class User < ActiveRecord::Base

  has_many :handles, :class_name => "UserHandle"

def get_current_age
    age(self.handles.first.birthday)
end

无法解决您的问题:错误的原因是您无法将年龄(users.handles.first.birth)>=?“按您的
where()
放入。引号中的字符串直接传递给MySQL;Ruby根本没有对它进行评估。是的,我认为这是导致这个错误的原因。与其说是什么导致了错误,不如说是如何在不导致错误的情况下实现错误。我尝试为用户定义
get\u current\u age
方法,但这会导致一个
未知列“users.get\u current\u age”
错误,尽管我为用户模型提供了其他几种类似的方法,所有这些方法都有效。有没有人知道如何避开这个问题?
ActiveRecord::StatementInvalid in SearchController#data

Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.birthday) >= 90)' at line 1: SELECT `assets`.* FROM `assets` INNER JOIN `users` ON `users`.`id` = `assets`.`user_id` WHERE (age(users.handles.first.birthday) >= 90)

Rails.root: /Users/Jimmy/Documents/Launchpad Toys/LPT_Repositories/orbit-analytics
Application Trace | Framework Trace | Full Trace

app/controllers/search_controller.rb:254:in `find_by_user_current_age'
app/controllers/search_controller.rb:121:in `robot_search'
app/controllers/search_controller.rb:384:in `data'