0
所以我有一個User
模型,它有一個first_name
和last_name
列。如何在現有模型上設置虛擬屬性?
我想創建一個名爲username
的新虛擬屬性,即使在我的路由文件中也可以訪問它。
我試着這樣做:
attr_accessor :username
# getter
def username
@username
end
# setter
def username=(user)
@username = "#{user.first_name}.#{user.last_name}"
end
但是,當我嘗試設置它,我得到一個錯誤的號碼參數錯誤。
[27] pry(main)> u.username=(u)
ArgumentError: wrong number of arguments (1 for 0)
from
[28] pry(main)> u.username = u
ArgumentError: wrong number of arguments (1 for 0)
from
u
是有效的User
記錄。
理想情況下,我想做兩件事。我希望能夠在我的數據庫中檢查所有User
對象的user.username
,並且它應該按照上述setter
方法返回。
我該如何做到這一點?
沒有必要讓我在我的'用戶'模型上指定'attr_accessor:username'? – marcamillion
您只能使用'attr_accessor'而不是手動執行的getter和setter。 – kimrgrey
如果我只使用'attr_accessor',我該如何設置'username'屬性?通常只有一個賦值語句? – marcamillion