如何生成属性名称,并在 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 模型中获取它们的值的主要内容,如果未能解决你的问题,请参考以下文章

如何解决 Rails 模型属性和 gem 名称冲突?

Django 动态名称属性并在views.py 中获取值

如何在has_many中获取模型的属性:通过Rails 5中的关联

如何通过asp.net核心中的属性名称从模型中获取验证属性

Ruby on Rails:以表单提交数组

如何让 Rails 为表单使用自定义字符串标签