I see 2 inserts of KeyValue rows on TranslationValue#create action
(and I should only have one). it inserts identical values.
Here are my models, the edit template, the create action and the log:
models:
class TranslationKey < ActiveRecord::Base
has_many :key_values
has_many :translation_values, :through => :key_values
end
class TranslationValue < ActiveRecord::Base
has_many :key_values
has_many :translation_keys, :through => :key_values
accepts_nested_attributes_for :translation_keys
end
class KeyValue < ActiveRecord::Base
belongs_to :translation_value
belongs_to :translation_key
end
edit tepmlate:
<% form_for(@content) do |f| %>
<%
if f.error_messages.length > 0
%>
<div class="error-message">
<%= error_messages_for :content, :header_message =>
''Error'', :message => '''' %>
</div>
<%
end
%>
<p>
<% f.fields_for :translation_keys do |key_form| %>
<%= key_form.label :name, ''Key name'' %>
<br />
<%= key_form.text_field :name %>
<br />
<br />
<%= key_form.label :tag_list, ''Add Tags'' %>
(separate tags with
a comma '','' )
<br />
<%= key_form.text_field :tag_list %>
<% end %>
</p>
<p>
<%= f.label :text, ''Content'' %><br />
<%= f.text_area :text %>
</p>
<p>
<%= f.submit ''Create'' %>
</p>
<% end %>
create action:
def create
@content = TranslationValue.new
respond_to do |format|
if @content.update_attributes( params[:translation_value] )
flash[:notice] = ''Key was successfully created.''
format.html { redirect_to(translation_keys_path) }
format.xml { render :xml => @content, :status
=> :created, :location => @content }
else
format.html { render :action => "new" }
format.xml { render :xml => @content.errors, :status
=> :unprocessable_entity }
end
end
end
Processing TranslationValuesController#create (for 127.0.0.1 at
2010-05-03 19:47:03) [POST]
Parameters: {"commit"=>"Create",
"translation_value"=>{"text"=>"value13",
"translation_keys_attributes"=>{"0"=>{"name"=>"key13",
"tag_list"=>""}}},
"authenticity_token"=>"J+dt/
qHwHkbKygh0wBPnXPLtpkb3Pb8URxGucEbpLa0="}
Language Load (0.1ms) SELECT * FROM `languages`
TranslationValue Columns (0.6ms) SHOW FIELDS FROM
`translation_values`
TranslationKey Columns (0.5ms) SHOW FIELDS FROM `translation_keys`
SQL (0.0ms) BEGIN
TranslationKey Load (0.2ms) SELECT `translation_keys`.id FROM
`translation_keys` WHERE (`translation_keys`.`name` = BINARY
''key13'')
LIMIT 1
CACHE (0.0ms) SELECT `translation_keys`.id FROM `translation_keys`
WHERE (`translation_keys`.`name` = BINARY ''key13'') LIMIT 1
TranslationValue Create (0.1ms) INSERT INTO `translation_values`
(`created_at`, `updated_at`, `text`, `language_id`) VALUES(''2010-05-03
19:47:03'', ''2010-05-03 19:47:03'',
''value13'', NULL)
TranslationKey Create (0.1ms) INSERT INTO `translation_keys`
(`name`, `created_at`, `updated_at`) VALUES(''key13'',
''2010-05-03
19:47:03'', ''2010-05-03 19:47:03'')
Tag Load (0.2ms) SELECT `tags`.* FROM `tags` INNER JOIN `taggings`
ON `tags`.id = `taggings`.tag_id WHERE (((taggings.context =
''tags''
AND taggings.tagger_id IS NULL) AND ((`taggings`.taggable_id = 8) AND
(`taggings`.taggable_type = ''TranslationKey''))) AND
((`taggings`.taggable_id = 8) AND (`taggings`.taggable_type
''TranslationKey'')))
Tagging Load (0.2ms) SELECT * FROM `taggings` WHERE
(((`taggings`.`tagger_id` IS NULL AND `taggings`.`tag_id` IN (NULL)
AND `taggings`.`context` = ''tags'' AND `taggings`.`tagger_type`
IS
NULL) AND (`taggings`.taggable_id = 8 AND `taggings`.taggable_type
''TranslationKey'')) AND (`taggings`.taggable_id = 8 AND
`taggings`.taggable_type = ''TranslationKey''))
KeyValue Columns (0.5ms) SHOW FIELDS FROM `key_values`
KeyValue Create (0.1ms) INSERT INTO `key_values`
(`translation_key_id`, `translation_value_id`, `created_at`,
`updated_at`) VALUES(8, 21, ''2010-05-03 19:47:03'',
''2010-05-03
19:47:03'')
KeyValue Create (0.1ms) INSERT INTO `key_values`
(`translation_key_id`, `translation_value_id`, `created_at`,
`updated_at`) VALUES(8, 21, ''2010-05-03 19:47:03'',
''2010-05-03
19:47:03'')
SQL (2.3ms) COMMIT
Redirected to http://0.0.0.0:3000/translation_keys
Completed in 29ms (DB: 5) | 302 Found [http://0.0.0.0/
translation_values]
Thanks!
--
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.