如何生成属性名称,并在 Rails 模型中获取它们的值
Posted
技术标签:
【中文标题】如何生成属性名称,并在 Rails 模型中获取它们的值【英文标题】:How to generate attribute names, and grab their values in a rails model 【发布时间】:2015-04-09 22:28:20 【问题描述】:d我正在编写一个 Model
函数,该函数在哈希上进行迭代,其键的名称与模型属性名称相同。我想将哈希键的值与同名模型属性中包含的值进行比较。但是,当我生成属性名称时,我不知道如何实际引用实际的模型名称及其对应的属性。目前我正在做以下事情:
def grade
num_correct = 0
answers = self.class.answers
answers.each do |question, value|
db_question = question
num_correct = num_correct + 1 if db_question.to_i == value
end
if num_correct < 22
return "Beginner"
elsif num_correct >= 22 and num_correct < 41
return "Intermediate"
else
return "Advanced"
end
end
我希望db_question
实际上是模型属性“db_question”,但是我不确定如何从相当于实际模型属性的简单字符串转换为模型属性 本身.
【问题讨论】:
您是否尝试过使用send
方法。我认为这将是必要的。工作原理链接:***.com/questions/7895253/…
(放在末尾时,ruby 中不需要显式返回)
【参考方案1】:
在你的情况下:
value = model.send 'Beginner'.downcase.to_sym
一般 - 让字符串自己打印.....:
'yolo'.send 'to_s'.to_sym
相当于
'yolo'.to_s
相当于
'yolo'
【讨论】:
以上是关于如何生成属性名称,并在 Rails 模型中获取它们的值的主要内容,如果未能解决你的问题,请参考以下文章