Ruby on rails 3 通过\ sql和计算字段查找\ U
我正在使用FindMySQL,我想在数据库中计算一些东西并添加到我的模型中 我会尽量简化代码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 =
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