Rails API:accepts_nested_attributes_for

accepts_nested_attributes_for(*attr_names) Link
定義了對具體屬性的寫接口。
支持的參數有:
:allow_destroy #允許刪除參數,默認爲關閉,若此參數爲true,對於成員屬性哈希表中以_destroy結尾屬性,若賦值爲true(例如爲1,'1',true,'true'),將對此類屬性進行刪除。
:reject_if  #有條件的拒絕參數,允許你指定具體的Proc或方法的符號形式,來判斷屬性參數是否被接受。所有的屬性參數被髮送到Proc或方法中處理,返回true或false。若:reject_if未指定任何參數,除了以_destory後綴形式的參數其他所有屬性參數都會被接受。若傳入:all_blank來替代Proc,除以_destroy結尾的屬性參數外,所有值爲空的屬性也將不會被接受。
:limit  #關聯記錄的個數限制參數,允許指定內嵌屬性的最大關聯記錄個數。該參數也可以被指定爲返回結果爲數字的Proc或方法符號形式。若內聯屬性的關聯記錄個數超出限值,將會報NestedAttributes::TooManyRecords異常。若未指定該參數,個數將不受限制。注意,該參數只有在一對多關係中可用。
:update_only #更新限制參數,對於一對一的關聯關係,該參數允許你指定,當記錄已存在的情況下,嵌套屬性將如何處理。通常情況下,已存在的記錄將會被新的屬性集合更新掉或被完全替代。默認情況下,該參數設爲false,只要屬性中有記錄的:id值,已存在的記錄將會被更新掉。否則,新紀錄將會被實例化,並替換掉舊記錄。然而,若該屬性值爲true,不管是否有:id屬性,對於舊記錄將總是進行更新。該參數對於集合屬性將被忽略。
Examples:
# creates avatar_attributes=
accepts_nested_attributes_for :avatar, reject_if: proc { |attributes| attributes['name'].blank? }
# creates avatar_attributes=
accepts_nested_attributes_for :avatar, reject_if: :all_blank
# creates avatar_attributes= and posts_attributes=
accepts_nested_attributes_for :avatar, :posts, allow_destroy: true
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章