DataTable newDt = new DataTable();
//Select indexes
var indexes = dt.Rows.Cast<DataRow>().Select(row => dt.Rows.IndexOf(row));
//Select the columns
var newCols = indexes.Select(i => "Row" + i);
//Add columns
foreach(var newCol in newCols)
{
newDt.Add(newCol);
}
//Select rows
var newRows = dt.Rows.Cast<DataColumn>().Select(col =>
{
row = newDt.NewRow();
foreach(int i in indexes)
{
row[i] = dt.Rows[i][col.Name];
}
return row;
});
//Add row to new datatable
foreach(var row in newRows)
{
newDt.Add(row);
}
По-моему, это - лучший способ сделать это:
class FooBar < ActiveRecord::Base
validates_uniqueness_of :foo, :bar, :unless => :force_submit
attr_accessor :force_submit
end
тогда в Вашем представлении, удостоверьтесь, что Вы называете отправлять тег как
<%= submit_tag 'Resubmit', :name => 'foo_bar[force_submit]' %>
этот путь, вся логика находится в модели, код контроллера останется таким же.
Попробуйте это:
направляющие 2: Model.save(false)
направляющие 3: Model.save(:validate => false)
Это обходит проверки (все они хотя).
Не положительный в этом, но Вы могли попытаться добавить attr_accessor к своей модели, чтобы содержать, была ли форма отправлена однажды.
просто добавляют
attr_accessor :submitted
к Вашей модели и проверке на него в Ваших проверках.
Можно просто посмотреть на кнопку отправки, чтобы определить, хотите ли Вы выполнить проверки.
def form_method
case params[:submit]
when "Submit"
'Do your validation here'
when "Resubmit"
'Do not call validation routine'
end
end