Cześć
W ramach poznawania możliwości RoR, chciałem zrobić prostą (wydawało by się) funkcjonalność.
Member ma swój numer i kartotekę do której jest przypisany. Ani numer, ani kartoteka nie są nigdzie więcej używane, nie są połączone relacjami z Member…
[code]class CreateMembers < ActiveRecord::Migration
def change
create_table :members do |t|
t.string :name
t.integer :number
t.integer :dir
t.timestamps
end
end
end[/code]
class Member < ActiveRecord::Base
composed_of :ident,
:mapping => [ %w(number to_s), %w(dir to_s)]
end
[code]class Ident < ActiveRecord::Base
attr_reader :number, :dir
def initialize(number, dir)
@number, @dir = number, dir
end
def to_s
[@number, @dir].join("/")
end
end[/code]
Fragment formularza do tworzenia/edycji member
[code]
<%= f.label :ident %>
<%= f.text_field :ident %>
Można użyć before_validation i odpowiedniej funkcji, która przekształci przekazany ident i odpowiednio przypisze do number i dir.
Sposób to prosty, ale chyba mało elegancki.
W jaki sposób można to zrobić w modelu, helperze czy może jeszcze gdzieś indziej?