Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 3 通过\ sql和计算字段查找\ U_Ruby On Rails 3_Activerecord - Fatal编程技术网

Ruby on rails 3 通过\ sql和计算字段查找\ U

Ruby on rails 3 通过\ sql和计算字段查找\ U,ruby-on-rails-3,activerecord,Ruby On Rails 3,Activerecord,我正在使用FindMySQL,我想在数据库中计算一些东西并添加到我的模型中 我会尽量简化代码 class User < ActiveRecord::Base attr_accessor :comments_count end 有什么帮助吗?很遗憾,ActiveRecord不仅会将任何选定的列与模型上的属性进行匹配。然而,这样的东西可能很容易组合起来。首先,您需要将find_by_sql重载为如下内容- def self.find_by_sql(sql) values =

我正在使用FindMySQL,我想在数据库中计算一些东西并添加到我的模型中

我会尽量简化代码

class User < ActiveRecord::Base
   attr_accessor :comments_count

end

有什么帮助吗?

很遗憾,ActiveRecord不仅会将任何选定的列与模型上的属性进行匹配。然而,这样的东西可能很容易组合起来。首先,您需要将
find_by_sql
重载为如下内容-

def self.find_by_sql(sql)
    values = connection.select_all(sql)

    objects = []

    values.each do |row|
        objects << self.new(row)
    end

    objects
end
def self.find_by_sql(sql)
值=连接。选择所有(sql)
对象=[]
值。每个do |行|
对象好的,我知道了。
它与attr_访问器无关。我必须把它移走

@users = User.find_by_sql("select * (select count(*) from comments where user_id=u.id) as comments_count from Users u")

@user.map do |u|
  puts u.comments_count if @user.has_attribute?(:comments_count)
end

你确定吗?我发现了以下内容:www.railsrocket.com/find_by_sql,他说我可以做到。很抱歉,我没有意识到这个功能-我使用的版本很旧,因此可能是问题所在。但是,如果这是文章中描述的,那么你的问题是什么?问题是它不起作用:)。我不确定attr_访问器是否正常?我如何访问属性?您介意详细解释解决方案吗?它与Q-aside-map调用中的内容有何不同?我也面临同样的问题。
@users = User.find_by_sql("select * (select count(*) from comments where user_id=u.id) as comments_count from Users u")

@user.map do |u|
  puts u.comments_count if @user.has_attribute?(:comments_count)
end