Этот пост выглядит довольно устаревшим, я бы рекомендовал вместо него использовать accepts_nested_attributes_for
и fields_for
в вашей форме.Тем не менее, перекрывающиеся атрибуты, вероятно, должны быть установлены в обратных вызовах вашей модели.Скажем, вы хотите, чтобы имя проекта автоматически устанавливалось на имя первого задания.
class Project < ActiveRecord::Base
has_many :tasks
accepts_nested_attributes_for :tasks
before_validation :set_name_from_task
private
def set_name_from_task
self.name = tasks.first.name
end
end
Если ваши две модели совершенно не связаны, вы можете назначить им определенные параметры непосредственно в контроллере.
def create
@foo = Foo.new(params[:foo])
@bar = Bar.new(params[:bar])
@bar.common_attr = params[:foo][:common_attr]
# validation/saving logic
end
Хотя это не очень хорошая практика, в идеале эту логику следует перенести в модели.