如何處理Model中不存在的屬性 虛擬屬性

2021-09-02 13:00:09 字數 751 閱讀 5504

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

class event < activerecord::base

#...

def custom_field

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

enddef custom_field=(value)

# 根據value,來調整其他屬性的值

endend

這樣就可以在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

"# #"

enddef full_name=(value)

self.first_name, self.last_name = value.to_s.split(" ", 2)

end

FreeMarker 處理不存在的變數

freemarker 不能容忍引用不存在的變數,除非明確地告訴它當變數不存在時如何處理。不論在 引用變數,都可以指定乙個預設值來避免變數丟失這種情況,通過在變數名後面跟著乙個 和預設值。就像下面的例子 當 user 從資料模型中丟失時,模板將會將user 的值表示為字串 anonymous 當然也可...

xencenter中如何刪除不存在池中的儲存

新增新硬碟 xe sr create name label data shared false device config device dev sdb type lvm 如何刪除在xencenter裡無法刪除的sr儲存 因為pbd已經連線的緣故,我們無法直接使用sr destroy刪除sr。首先我...

xencenter中如何刪除不存在池中的儲存

新增新硬碟 xe sr create name label data shared false device config device dev sdb type lvm 如何刪除在xencenter裡無法刪除的sr儲存 因為pbd已經連線的緣故,我們無法直接使用sr destroy刪除sr。首先我...