Соглашение по конфигурации, так что вы идете против зерна здесь.
Что касается базы данных, сохраните ее в виде строки с разделителями-запятыми, например User.websites_string
.
class User
attr_accessor :website_one
attr_accessor :website_two
attr_accessor :webstie_three
before_save :parse_websites
def prase_websites
w1 = self.website_one ||= ""
w2 = self.website_two ||= ""
w3 = self.website_three ||= ""
self.websites = "#{w1}, #{w2}, #{w3} "
end
def websites
self.websites_string.split(/[\s,]+/)
end
end
Тогда в представлениях вам нужно написать свой собственный метод, чтобы иметь различные text_fields
.
<%= @form_for(user) do |f| %>
<p><%= f.text_field :website_one %></p>
<p><%= f.text_field :website_two %></p>
<p><%= f.text_field :webstie_three %></p>
<% end %>
И если вы хотите иметь больше веб-сайтов, вам следует подумать о метапрограммировании. Действительно высушить вещи. Но такие сайты, как linkedin, SO, Twitter ... обычно не имеют неограниченных URL.