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



使用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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值