У меня есть вложенные атрибуты для модели Rails, и проверки связей по какой-то причине не выполняются. Я не использую acceptpts_nested_attributes_for, но я делаю что-то очень похожее.
class Project < ActiveRecord::Base
has_many :project_attributes
def name
project_attributes.find_by_name("name")
end
def name=(val)
attribute = project_attributes.find_by_name("name")
if attribute
attribute.value = val
else
project_attributes.build(:name=>"name", :value=>val)
end
end
end
class ProjectAttribute < ActiveRecord::Base
belongs_to :project
validates_presence_of :name
validates_uniqueness_of :name, :scope => :project_id
validates_presence_of :project_id, :unless => lambda {|attribute| attribute.project.try(:valid?)}
validates_associated :project
end
Это надуманный пример, но похожий на то, что я пытаюсь сделать. Я взглянул на то, что делает acceptt_nested_attributes_for, и он использует метод сборки, который, как я думал, связывает атрибут build с проектом.
Я также посмотрел на acceptpts_nested_attributes_для проверки ассоциации детей, которая не прошла , что дало мне validates_presence_of :unless=>valid?
Есть идеи, как заставить это работать?