我有一个简单的问题。我无法弄清楚此sql查询的等效轨道:
select COUNT(description) from reports where user_id = current_user;
其实我想算一下总数。特定用户在登录其帐户时发布的报告,而不是所有用户发布的所有报告。 我也无法弄清楚我应该如何传递登录的当前用户的user_id,以便我可以获得所需的结果。 请帮助。
答案 0 :(得分:2)
类似的东西:
current_user.reports.count
答案 1 :(得分:1)
在Rails 2中
如果您在用户模型中定义了has_many :reports
。
count = current_user.reports.first(:select => "COUNT(description) as count").count
如果模型中未定义has_many
,
count = Report.first(:select => "COUNT(description) as count",
:conditions => {:user_id => current_user.id}).count
但current_user.reports.select{ |report| report.description }.count
虽然产生了不同的查询,但已经足够了。 (Select * from reports where ..
)然后获取数组的计数。
但是在Rails 3中,它很容易。
如果您在用户模型中定义了has_many :reports
。
count = current_user.reports.count(:description)
,否则
count = Report.where(:user_id => current_user.id).count(:description)
请参阅Rails guide以获取Rails 3 AR计算查询。