簡體   English   中英

Ruby on Rails模型自定義to_s方法,排除nill或空值

[英]Ruby on Rails model custom to_s method, exclude nill or blank values

我定義了以下模型(使用Mongoid,不是活動記錄)

class Address
  include Mongoid::Document

  field :extra, type: String
  field :street, type: String
  field :area, type: String
  field :city, type: String
  field :code, type: Integer

  validates :street, :city, presence: true

  def to_s
    "#{extra},#{street},#{area},#{city},#{code}"
  end
end

我正在定義to_s方法,所以我可以使用:

<%= address %> 

在我的視圖中,它將正確打印出地址。 但是上面代碼的問題,如果任何屬性為空或者為零,我最終會得到以下結果:

1.9.3p327 :015 > a
 => #<Address _id: 50f2da2c8bffa6e877000002, _type: nil, extra: "hello", street: nil, area: nil, city: nil, code: nil> 
1.9.3p327 :016 > puts a
hello,,,,,
 => nil 

使用一堆除非語句來檢查值是空白還是零似乎是錯誤的方法(我可以讓它像這樣工作,但似乎是hackish)

這會是一個更好的方法嗎?

你可以用它

def to_s
  [extra, street, area, city, code].select{|f| !f.blank?}.join(',')
end

將元素存儲在數組中,拋出無效值,與分隔符連接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM