В моей суб-лицевом бухгалтерские рельсы приложения У меня есть модельRails с использованием fields_for
class Fund < ActiveRecord::Base
belongs_to :agency
has_many :gl_accounts
accepts_nested_attributes_for :gl_accounts
attr_accessible :name, :agency_id, :fund, :user_stamp, :active
attr_accessible :gl_accounts_attributes
фондов и модель gl_accounts
class GlAccount < ActiveRecord::Base
belongs_to :agency
belongs_to :fund
has_many :class_sessions
has_many :facilities
validates :agency_id, :fund_id, :name, :gl_account_number, :active, :user_stamp, :account_type, :presence => true
validates_uniqueness_of :account_type, :scope => :fund_id, :if => :unique_account_type
attr_accessible :agency_id, :fund_id, :name, :gl_account_number, :active, :user_stamp, :account_type
def unique_account_type
[3,4,6,7,8].include? account_type
end
При создании нового фонда есть 5 gl_accounts что должен быть создан одновременно, поэтому я использую fields_for
для создания 5 новых записей в модели gl_account, когда новая запись создается для фонда. Кажется, все работает нормально, пока я не отправлю форму, и я получаю сообщение о том, что «Фонд счетов Gl не может быть пустым».
В модели gl_accounts нет атрибута "fund". Я подумал, что, возможно, рельсы отбрасывают часть «_id» (поскольку есть поле foreign_id foreign key), но я был в понимании, что использование вложенных моделей и fields_for
автоматически добавляет правильное значение в поле fund_id (внешний ключ gl_account модель). Но даже если я добавлю скрытое поле в форму со значением для fund_id, я все равно получаю сообщение о том, что «фонд» не может быть пустым.
Итак, возможно, рельсы пытаются сказать мне, что у меня что-то еще не так?
Вот Титулы:
{"utf8"=>"✓",
"authenticity_token"=>"MNWLFOnLOE+ZRsUf9mogf2cq/TeQ+mxtrdaVu3bEgpc=",
"fund"=>{"agency_id"=>"1",
"user_stamp"=>"6",
"name"=>"Junk",
"fund"=>"44",
"active"=>"1",
"gl_accounts_attributes"=>{"0"=>{"agency_id"=>"1",
"user_stamp"=>"6",
"account_type"=>"6",
"name"=>"Cash Account",
"active"=>"1",
"fund_id"=>"1",
"gl_account_number"=>"44-498-965-789"},
"1"=>{"agency_id"=>"1",
"user_stamp"=>"6",
"account_type"=>"7",
"name"=>"Credit Card Account",
"active"=>"1",
"fund_id"=>"1",
"gl_account_number"=>"44-498-965-163"},
"2"=>{"agency_id"=>"1",
"user_stamp"=>"6",
"account_type"=>"3",
"name"=>"Customer Account Balances",
"active"=>"1",
"fund_id"=>"1",
"gl_account_number"=>"44-498-965-254"},
"3"=>{"agency_id"=>"1",
"user_stamp"=>"6",
"account_type"=>"8",
"name"=>"Refunds Pending Account",
"active"=>"1",
"fund_id"=>"1",
"gl_account_number"=>"44-498-965-456"},
"4"=>{"agency_id"=>"1",
"user_stamp"=>"6",
"account_type"=>"4",
"name"=>"Deferred Revenue Account",
"active"=>"1",
"fund_id"=>"1",
"gl_account_number"=>"44-498-965-159"}}},
"commit"=>"Add New Fund"}
Как вы относитесь к этим параметрам? – snowangel
@snowangel - я вернулся и включил параметры в исходное сообщение. Как вы можете видеть, в параметрах для каждой записи создается файл fund_id. – circle1