【问题标题】:Accessing different model attributes based on conditional根据条件访问不同的模型属性
【发布时间】:2017-10-19 04:22:33
【问题描述】:

我很好奇是否有一种很好的方法可以将模型的属性作为变量进行访问。

    if I18n.locale == :ja
      pref = Prefecture.all.find { |pr| pr.name == province }
    else
      pref = Prefecture.all.find { |pr| pr.name_e == province }
    end

类似这样的伪代码:

    ...find { |pr| pr.(I18n.locale == :ja ? name : name_e) == province }

我曾尝试将块存储在 proc 中,但我没有太多使用 procs 的经验(如果这种方法在这里可行的话)。感谢您的帮助!

【问题讨论】:

  • 这是您访问的 ActiveRecord 模型吗?

标签: ruby oop ruby-on-rails-5


【解决方案1】:
attr =
case I18n.locale
when :ja then :name
else :name_e

pref = Prefecture.find {|pr| pr.send(attr) == province}

【讨论】:

  • 啊,我忘了#send!感谢您的建议,我认为这基本上就是我想要的。
猜你喜欢
  • 2021-12-01
  • 1970-01-01
  • 2020-10-17
  • 1970-01-01
  • 1970-01-01
  • 2019-09-01
  • 2015-10-11
  • 2016-02-18
  • 1970-01-01
相关资源
最近更新 更多