Ruby on Rails Monday, May 3, 2010

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@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment