Hi, thank you for your attention.
The class represents one Address, and an address can belongs to a
Building, Apartment or a Person, to implement that concept i
successful used the belongs_to
class Address < ActiveRecord::Base
hobo_model # Don't put anything above this
fields do
street :string
nr :string
floor :integer
postal_code :integer
latitude :string
longitude :string
timestamps
end
belongs_to :person
belongs_to :building
belongs_to :apartment
belongs_to: city
belongs_to: country
end
Now, if i have a address of a building and i create a new address for
an apartment on that building i will want to load automatically a new
form but with the same data (on certain fields) of the building
address, because the address of the apartment will have the same city
and the same country and street name.
class Building < ActiveRecord::Base
hobo_model # Don't put anything above this
fields do
name :string
timestamps
end
has_many :address #(implemented as has_one)
has_many :apartments
end
class Apartment < ActiveRecord::Base
hobo_model # Don't put anything above this
fields do
name :string
timestamps
end
has_one :address
belongs_to :building
belongs_to :person
end
The idea was to implement at the Address controller on the action
new_for apartment that logic to bring some values to the new address
for apartment form heredited from the building address.
def new_for_apartment
hobo_new_for :apartment do
if params[:apartment_id]
@aptm=Apartment.find(:first, :conditions=> ["id
= ?",params[:apartment_id] ])
original = Address.find(:first, :conditions=> ["building_id
= ?",@aptm.building_id])
this = @morada= original.clone
else
@address.attributes = params[:address] || {}
hobo_ajax_response if request.xhr?
end
end
end
Any ideas?
Thanks.
On Mar 29, 6:47 pm, Matt Jones <[email protected]> wrote:
> On Mar 28, 2010, at 11:56 AM, Daniel M wrote:
>
>
>
>
>
> > :(
>
> > Does not work...
>
> > Maybe is because I have a new_for action
>
> > def new_for_fraccao
> > hobo_new_for :fraccao do
> > if params[:fraccao_id]
> > @fraccao=Fraccao.find(:first, :conditions=> ["id
> > = ?",params[:fraccao_id] ])
> > original = Morada.find(:first, :conditions=> ["imovel_id
> > = ?",@fraccao.imovel_id])
> > this = @morada= original.clone
> > else
> > @morada.attributes = params[:morada] || {}
> > hobo_ajax_response if request.xhr?
> > end
> > end
> > end
>
> My first guess would be that cloning 'original' is messing up the
> logic that detects where to send the form data to - the object won't
> have new_record? set, for instance. You'll probably want to grab the
> object already in 'this' (set up by hobo_new_for) and fill in any
> parameters that you need.
>
> HOWEVER, in this case it seems like there's a code smell here; typical
> DB normalization rules mean there shouldn't *be* any data to copy in
> this situation. Can you provide more detail on your models?
>
> Thanks,
>
> Matt Jones
--
You received this message because you are subscribed to the Google Groups "Hobo
Users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/hobousers?hl=en.