表单字段不是rails db模型的一部分

cma*_*n77 10 ruby-on-rails

我在一个表单上有一个字段,我试图访问相应的模型,但它不是模型数据库表的一部分.处理这个问题的最佳方法是什么?这是不好的做法吗?

Nob*_*ita 23

拥有不在数据库表中的模型属性是可以的.这些称为虚拟属性.

假设你想要处理一个名为'virtual_attribute'的属性.以下是您将如何处理它:

在你的形式,你会有这样的事情:

<%= f.check_box :virtual_attribute %>
Run Code Online (Sandbox Code Playgroud)

在您的模型中,您必须这样做:

attr_accessor :virtual_attribute
Run Code Online (Sandbox Code Playgroud)

请注意,这是一个内置的Ruby方法,它为您提供该属性的setter和getter:

#getter
def virtual_attribute
  @virtual_attribute
end

#setter
def virtual_attribute=(value)
  @virtual_attribute = value
end
Run Code Online (Sandbox Code Playgroud)