Rails - 具有属性的模型,它不存储在数据库中

时间:2016-12-14 12:44:54

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

整个项目都是这样构建的:我有一个提供数据和保存数据的api。比另一个将数据api的数据转换为“漂亮和干净”数据的应用程序。而不是前端,它采用了漂亮而干净的数据。

在中间部分,我得到了模型字段。它有多个属性,如:id,area等。这些属性也在schema.rb中。现在我也有类似于:field_nr的属性,它们不在schema.rb中。但取自api,转换后再打印为json。现在我必须从字段模型中读取属性field_nr,该属性不在schema.rb / database中。我该如何阅读这些属性?

感谢您的帮助&只是询问是否有不清楚的事情

2 个答案:

答案 0 :(得分:0)

作为选项,您可以将attr_accessor :field_nr添加到模型类中。这将为您提供所需的制定者和吸气剂。

答案 1 :(得分:0)

添加"虚拟"属性到ActiveRecord模型,就像向任何其他Ruby类添加属性一样。

在Ruby实例中,变量总是私有的*。您可以通过创建访问者来提供访问权限:

class Thing
  attr_reader :a_readable_attr
  attr_setter :a_write_only_attr
  attr_accessor :a_rw_attribute
end

这与以下内容相同:

class Thing
  def a_readable_attr
    @a_readable_attr
  end

  def a_write_only_attr=(v)
    @a_write_only_attr = v
  end

  def a_rw_attribute
    @a_rw_attribute
  end

  def a_rw_attribute=
    @a_rw_attribute
  end
end

Rails中的一个很酷的事情是,只要setter存在,它就允许你从哈希中分配属性:

class Thing < ActiveRecord::Base
  attr_accessor :foo
end

Thing.new(foo: 'bar')