2
組件has_many文本。 我使用組件模型的嵌套屬性來創建文本。 我也有複選框選擇先前創建的文本(多通過)驗證新條目或關聯
對於每個組件,我只能選擇一個文本。
如何驗證文本的組件? 它應該看看是否有一個複選框被選中(在以前的文本) 或者它應該驗證創建一個新的文本(textarea min 5)
我該怎麼做?
謝謝! - 文森特
組件has_many文本。 我使用組件模型的嵌套屬性來創建文本。 我也有複選框選擇先前創建的文本(多通過)驗證新條目或關聯
對於每個組件,我只能選擇一個文本。
如何驗證文本的組件? 它應該看看是否有一個複選框被選中(在以前的文本) 或者它應該驗證創建一個新的文本(textarea min 5)
我該怎麼做?
謝謝! - 文森特
如果你想確保關聯是存在,你需要測試相關的對象本身是否存在,並且不使用外鍵來映射關聯。
class LineItem < ActiveRecord::Base
belongs_to :order, inverse_of: :line_items
validates :order, presence: true
end
雖然我不認爲這是你在找什麼,它一定會幫助你。
-
我不認爲你需要的是你可以做什麼的定義:
accepts_nested_attributes_for
(新記錄)association
(協會數據)如果你希望驗證相關對象上創建,你會能夠把驗證的相關模型,然後將通過其中任何一個回當前的模型:
#app/models/component.rb
class Component < ActiveRecord::Base
has_many :texts, inverse_of: :component
accepts_nested_attributes_for :texts
end
#app/models/text.rb
class Text < ActiveRecord::Base
belongs_to :component, inverse_of: :texts
validates :param, presence: true
end
這將拒絕text
記錄,如果它沒有上創建param
集。
-
如果你加載一個text
對象,並希望以驗證現有text
可用等等 - 你想使用下列內容:
#app/models/component.rb
class Component < ActiveRecord::Base
has_many :texts
validates_associated :texts
end
這可以確保所有的associatedtexts
有效。
如果在組件上只能有一個文本,那麼爲什麼has_many關聯而不是has_one? – Deep
現在我只使用一個文本,但我希望可以選擇使用很多(用於將來的更新)。 – Vincent