【问题标题】:How to keep a transient variable as part of ActiveRecord如何将瞬态变量保留为 ActiveRecord 的一部分
【发布时间】:2025-12-05 13:05:02
【问题描述】:

我想在 Rails3.2 中显示一个变量(实际上是一个列表)作为 f.select(..) 函数的一部分,以便将所选值存储在 ActiveRecord 对象的不同属性中。如何将上面的 List 变量声明为 ActiveRecord 中的临时变量,以便 ActiveRecord 不会尝试存储它。

【问题讨论】:

  • 您的问题应该更加具体。举个例子,你的代码是什么?
  • 也许 OP 想知道在 ActiveRecord 类中声明瞬态变量。

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord


【解决方案1】:

您可以像这样在模型中编写自己的 getter 和 setter 方法(不要忘记将其添加到 attr_accessible):

def virtual_attr=(value)
  self.real_attr = value
end

def virtual_attr
  self.real_attr
end

或者只是为真实属性创建一个别名,如下所示:

alias_attribute :virtual_attr, :real_attr

【讨论】:

    【解决方案2】:

    在 rails 4+ 中,您可以通过以下方式在模型中定义瞬态字段:

    attr_accessor :the_field
    

    【讨论】:

      最近更新 更多