`

如何处理Model中不存在的属性-虚拟属性

    博客分类:
  • RUBY
 
阅读更多

使用form_for時,其中的欄位必須是Model有的屬性,那如果資料庫沒有這個欄位呢?這時候你依需要在Model程式中加上存取方法,例如:

class Event < ActiveRecord::Base

    #...
    def custom_field
        # 根據其他屬性的值或條件,來決定這個欄位的值
    end

    def custom_field=(value)
        # 根據value,來調整其他屬性的值
    end
end
這樣就可以在form_for裡使用custom_field了。

<%= form_for @event do |f| %>
    <%= f.text_field :custom_field %>
    <%= f.submit %>
<% end %>



2、虚拟属性(Virtual Attribute)

有時候表單裡操作的屬性資料,不一定和資料庫的欄位完全對應。例如資料表分成first_name和last_name兩個欄位好了,但是表單輸入和顯示的時候,只需要一個屬性叫做full_name,這時候你就可以在model裡面定義這樣的方法:

def full_name
    "#{self.first_name} #{self.last_name}"
end

def full_name=(value)
    self.first_name, self.last_name = value.to_s.split(" ", 2)
end
分享到:
评论

相关推荐

    Ant design vue中的a-select在动态给option赋值之后,placeholder失效.pdf

    为了使`placeholder`生效,我们可以使用计算属性来处理`v-model`,确保在未选择任何选项时返回`undefined`。 首先,将`receiveAcademy`改为一个包含`label`和`value`的对象,如`queryReceiveAcademy`: ```...

    前端项目-tree-model.zip

    在前端开发中,树型结构(Tree Model)是一种常见的数据结构,用于表示具有层次关系的数据。这个名为"前端项目-tree-model.zip"的压缩包显然包含了关于如何在JavaScript中操作和遍历这种数据结构的示例代码。让我们...

    Laravel开发-laravel-model-images

    使用此库,你可以为模型添加虚拟属性,例如`$appends`数组中添加`image_url`,这样在查询时模型会自动包含图片的URL,简化视图层的代码。 5. **访问器与修改器(Accessors & Mutators)**: 库支持定义访问器和...

    vue面试题.docx

    * 因为 JavaScript 的特性所导致,在 component 中,data 必须以函数的形式存在,不可以是对象 * 组件中的 data 写成一个函数,数据以函数返回值的形式定义,这样每次复用组件的时候,都会返回一份新的 data,相当于...

    虚拟物品销售作为收入模型:识别驱动购买决策的属性-研究论文

    2007年,虚拟物品,角色和货币的全球市场估计... 在本文中,我从消费社会学的角度出发,分析了14个虚拟资产平台的示例,以提出一套更详细的项目属性集,这些属性可驱动虚拟项目购买决策,包括功能,享乐和社会属性。

    move model

    在C#编程环境中,开发3D应用程序时,我们经常需要处理3D模型的移动操作,类似于3D建模软件如3D Max中的功能。"move model"这个标题指的是实现3D模型在虚拟空间中的平移操作。下面我们将深入探讨如何在C#中实现这一...

    QTableView-MODEL VIEW 标准模型实现

    在Qt框架中,QTableView是用于显示表格数据的控件,它是基于Model/View体系结构设计的。这个体系结构将数据逻辑(Model)与数据显示(View)分离,提供了高度的灵活性和可扩展性。本教程将深入探讨如何利用...

    Ophone / Android 系统属性列表

    - `ro.product.model` 和 `ro.product.name` 这两个属性分别用于标识产品的型号和名称。它们通常由制造商定义,在系统启动时加载。这些信息可以在关于手机的部分找到,也可以通过编程方式获取。 2. **调试标志** ...

    virtual audio虚拟声卡

    标题中的“virtual audio虚拟声卡”是指一种技术,它允许我们在计算机系统中创建一个或多个虚拟的音频设备,这些设备并不直接与物理硬件关联,而是通过软件模拟来处理和传输音频数据。虚拟声卡通常用于测试、录音、...

    基于QML的虚拟键盘

    在虚拟键盘的实现中,常见的元素包括`Item`(基础组件)、`Rectangle`(矩形)、`Button`(按钮)等。 虚拟键盘的核心是按键布局,这可以通过在QML文件中定义一系列的`Button`元素来完成。每个按钮都可以设置其文本...

    虚拟dom1

    - **批量更新**:虚拟DOM允许在一次批处理操作中处理多个变化,进一步提升性能。 - **跨平台**:虚拟DOM可以用于不同的环境,如Web、小程序等,因为它们不依赖于特定的DOM实现。 **4. Diff算法** Diff算法是虚拟...

    js实现虚拟键盘

    在这个场景中,我们讨论的是使用JavaScript来实现一个虚拟键盘,这对于触摸屏设备上的输入操作非常有用,比如在移动设备或平板电脑上,用户可能没有物理键盘,此时虚拟键盘就成为了必要的输入工具。 虚拟键盘的实现...

    Inside-The-CPP-Object-Model.rar_inside

    书中可能还会讨论其他主题,如运算符重载、模板、异常处理、STL(标准模板库)等,这些都是C++中增强程序功能和效率的重要工具。理解这些概念和机制对于深入学习C++和编写高质量的C++代码至关重要。 总的来说,...

    Linux-2[1].6-device-model.rar_linux 设备模型

    Linux设备模型的主要目标是为内核提供一个统一的方式来识别、管理和操作系统中的所有硬件设备,无论它们是物理的还是虚拟的。在2.6内核中,设备模型通过抽象化硬件接口,使得驱动程序能够更高效、灵活地与设备交互,...

    虚拟股票交易系统代码

    在实际开发过程中,为了提高系统的可维护性和可扩展性,可能还会采用MVC(Model-View-Controller)架构模式,将业务逻辑、数据模型和用户界面分离。此外,安全性也是重要考虑因素,如使用HTTPS协议保护用户信息,...

    5.2.3.components-model.html.zip

    标题 "5.2.3.components-model.html.zip" 暗示了我们正在处理一个与Web开发相关的主题,特别是关于组件模型的部分。这个压缩文件包含一个名为 "5.2.3.components-model.html" 的HTML文档,这很可能是某个教程、指南...

    vue3虚拟滚动+分页加载下拉选择器

    在Vue3中,为了优化大型数据列表的性能,开发者经常采用虚拟滚动(Virtual Scrolling)技术,这是一种在不牺牲用户体验的前提下,通过只渲染屏幕可视区域内的元素来提高页面加载速度的方法。结合分页加载,可以...

    【vuejs面试题】务必熟知的vuejs面试题「务必收藏」.pdf

    - **MVVM**(Model-View-ViewModel):在Vue中,Model代表数据,View是用户界面,ViewModel是连接Model和View的桥梁,它监听Model的变化并自动更新View,同时也处理View的用户交互,实现双向数据绑定。 5. **Vue...

    NSD Information Model Specification v0.1

    - 描述如何定义虚拟链路的属性与行为。 - 说明虚拟链路在NS中的作用。 #### 5. 信息模型定义 **5.1 NSD 定义:** - 描述NSD的总体架构。 - 明确NSD中各个组件的相互关系。 **5.2 VNFD 定义:** - 详述VNFD的格式...

Global site tag (gtag.js) - Google Analytics