我有兩個模型,場地和音樂會。音樂會屬於一個場地,場地有許多音樂會。在我的形式,我設置的音樂會場地使用定製的setter,形式看起來像:爲父模型設置值
<%= form_for @concert do |f| %>
<%= f.label :venue_name, "Venue" %>
<%= f.text_field :venue_name %>
然後在我的模型:
def venue_name=(name)
self.venue = Venue.find_or_create_by_name(name) if name.present?
end
這樣做的問題是,我還想添加一個模型的地址,如果它正在創建。這可能與孩子的形式?是否有可能將名稱和地址傳遞給setter?
編輯:
正如評論所說下面我搬到使用accepts_nested_attributes_for。瑞恩貝茨在這裏有一個偉大的截屏:http://railscasts.com/episodes/196-nested-model-form-revised或文檔也很好。
我之前用這個函數accept_nested來處理這個事情,但是因爲這是在belongs_to方面的事情而掙扎。現在我回過頭了,我的修復是,對於這個例子,而不是做@ concert.venue.build,其中belongs_to方面的語法是@ concert.build_venue
這聽起來像[嵌套屬性]的工作(http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html)。 – Matchu