Ruby on rails 使用动态列的Rails查询

Ruby on rails 使用动态列的Rails查询,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个很好用的方法。但这对我来说是一个提高Ruby技能的机会 在我的应用程序中,学生可以为一个特定的研讨会或整个学校获得美元。当一个学生总共收到多少美元时,我使用这个方法 def bucks_owned(category, source) if category == "giver" return self.currencies.where(:giver => source).sum(:amount) else return self.cu

我有一个很好用的方法。但这对我来说是一个提高Ruby技能的机会

在我的应用程序中,学生可以为一个特定的研讨会或整个学校获得美元。当一个学生总共收到多少美元时,我使用这个方法

def bucks_owned(category, source)
    if category == "giver"
        return self.currencies.where(:giver => source).sum(:amount)
    else
        return self.currencies.where(:school => source).sum(:amount)
    end
end
Ruby似乎允许在查询中使用动态列。我已经试过了,但没有如我所希望的那样奏效

def bucks_owned(category, source)
    self.currencies.where(:"#{category}" => source).sum(:amount)
end

你试过这个吗

def bucks_owned(category, source)
  self.currencies.where(category => source).sum(:amount)
end

你试过这个吗

def bucks_owned(category, source)
  self.currencies.where(category => source).sum(:amount)
end

嗯。它与应用于Rails的“#{category}”有何不同?我不确定它有何不同。但这种语法有效。我尝试的语法没有。老实说,我认为这也应该起作用,我也尝试了:D无论如何,这是simpleFrom OP的代码,可以假设
类别
是一个字符串对象,因此主要的区别是OP的是(只是一个例子):
Where(giver:=>source)
,而这个答案是
Where('giver'=>source)
。它们是不同的,但据我所知,Rails接受where子句的
String
Symbol
键,我现在很好奇,为什么这似乎只对Jeff有效,而正如他所说,符号不起作用。@Jay ArPolidario应该没有区别(除了OP中不必要的开销)因为
其中
将以某种方式将选项
散列
中的键转换为
字符串
。它与
有什么不同:“#{category}”
应用于Rails?我不确定它有什么不同。但是这种语法起作用了。我尝试的语法没有起作用。老实说,我认为这也应该起作用,我也尝试过:D无论如何,这是simpleFrom OP的代码,可以假设
category
是一个字符串对象,因此主要的区别是OP是(只是一个示例):
where(giver:=>source)
,而这个答案是
where('giver'=>source)
。它们是不同的,但据我所知,Rails接受where子句的
String
Symbol
键,我现在很好奇为什么这似乎只适用于Jeff,而正如他所说,符号不起作用。@Jay ArPolidario应该没有区别(除了OP中不必要的开销)因为
其中
将以某种方式将选项
哈希
中的键转换为
字符串