[英]Passing through an association attributes in ruby on rails
我有一個traversal
的模型user
。 遍歷模型具有一個屬性,框架。 我可以使用
user.traversal.frame
但我似乎還記得,有一種紅寶石可以使以下工作正常進行。
user.traversal_frame
在用戶模型中沒有額外的方法,即沒有
def traversal_frame
self.traversal.frame
end
還有另一種方法嗎?
使用delegate
方法。 像下面這樣
class User < ActiveRecord::Base
has_one :traversal
delegate :frame, to: :traversal
end
然后可以像下面這樣使用它
user.frame # => Same as user.traversal.frame
注意:-當user
沒有traversal
user.frame
將引發錯誤, raises NoMethodError: undefined method 'frame'
修復了以下使用問題
delegate :frame, to: :traversal, allow_nil: true
要使用user.traversal_frame
訪問它,您必須使用以下prefix
選項
delegate :frame, to: :traversal, prefix: true, allow_nil: true
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.