[英]Rails 5 API - saving data using virtual attributes does not save data
[英]Rails 3 virtual attributes not saving
我有一個帶有虛擬屬性的模型:
attr_accessible :published_at
def published_at_text
I18n.localize(published_at, format: :long_no_day_with_seconds) if published_at
end
def published_at_text=(text)
self.published_at = Chronic.parse(text)
end
這在單元測試中工作正常,但是在視圖中更改了Published_at_text字段時不會保存。 我試過使用attr_accessible :published_at_text
,並添加published_at_will_change!
setter方法,但我無法使它工作。
development.log
顯示,已傳遞了已更改的published_at_text值,但是在設置器中添加對Rails.logger的調用似乎表明它甚至沒有被調用。
我在這里想念什么?
好吧,您沒有提供使用params哈希創建對象的控制器方法,但是我可以猜測。
您應該使用傳遞給控制器的參數來顯式調用設置器。
然后檢查該值是否在您的模型上更新。
找到了:虛擬屬性的字段未作為文章的一部分傳遞回去,因此未在params哈希中顯示。
替換為:
<%= text_field_tag 'article_published_at_text', @article.published_at_text, class: 'text_date show_seconds' %>
有了這個:
<%= text_field_tag 'article_published_at_text', @article.published_at_text, name: 'article[published_at_text]', class: 'text_date show_seconds' %>
解決了問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.