generate an array of model instances

Hello,

In my app there is a one-to-many relation between members and
member_phones.
Following code works in ruby 1.8.7, rails 3.0.3 but fails on heroku.

@member = Member.new
@member_phone=@member.member_phones.build

but this works on heroku:

@member = Member.new
@member_phone=MemberPhone.new

But this way I have specify

@member_phone.save!

otherwise it is not saved in database.

Now, my problem is that if thats the way I have to go then , how do I
create a collection/hash/array of member_phones so that I can accept
mutliple member_phones on the view. Again a problem here as I can't use
formtastic gem because for one it would require a lot of custom styling
and I already have an application template for the whole application
that I have to use. And , also the hosting service which I may end up
finally end up to host my app will not allow any gems installation.
Therefore, I am stuck with default setup and javascript/jquery use to
customise my views.

Thanks.

In what way does it fail?

Colin

NoMethodError (undefined method `member_phones' for
#<Member:0x000000022d3938>):
  app/controllers/home_controller.rb:43:in `member'

Thats the error that I get.

Please quote the previous message when replying, it makes it easier to
follow the thread. Remember that this is an email list not a forum
(though you may be accessing it through a forum. Thanks.

NoMethodError (undefined method `member_phones' for
#<Member:0x000000022d3938>):
app/controllers/home_controller.rb:43:in `member'

Please post the code of member.rb and member_phones.rb (snip out any
irrelevant methods that may be there). Also the code from
home_controller around the error. Thanks.

Colin

Colin Law wrote in post #1065643:

Please quote the previous message when replying, it makes it easier to
follow the thread. Remember that this is an email list not a forum
(though you may be accessing it through a forum. Thanks.

NoMethodError (undefined method `member_phones' for
#<Member:0x000000022d3938>):
app/controllers/home_controller.rb:43:in `member'

Please post the code of member.rb and member_phones.rb (snip out any
irrelevant methods that may be there). Also the code from
home_controller around the error. Thanks.

Colin

home_controller
     def member

    @member = Member.new
    @member.family_id = random_number(5)
    @member_id=random_number(6)
    @member_phone=@member.member_phones.build
     end

And the view member.html.erb has :

<label>
                 <span>Home : </span>
              <%= text_field "member_phone", "home_phone", :class =>
"input_text" %>

             </label>

class MemberPhone < ActiveRecord::Base

  belongs_to :member, :foreign_key => "member_id"

end

class Member < ActiveRecord::Base
  alias_attribute :family_member_id, :member_id

  has_many :member_addresses , :foreign_key => "family_member_id"

  has_many :member_phones , :foreign_key => "family_member_id"

  accepts_nested_attributes_for :member_addresses
  accepts_nested_attributes_for :member_phones

end

Colin Law wrote in post #1065643:

Please quote the previous message when replying, it makes it easier to
follow the thread. Remember that this is an email list not a forum
(though you may be accessing it through a forum. Thanks.

NoMethodError (undefined method `member_phones' for
#<Member:0x000000022d3938>):
app/controllers/home_controller.rb:43:in `member'

Please post the code of member.rb and member_phones.rb (snip out any
irrelevant methods that may be there). Also the code from
home_controller around the error. Thanks.

Colin

home_controller
def member

@member = Member.new
@member.family_id = random_number(5)
@member_id=random_number(6)
@member_phone=@member.member_phones.build
end

And the view member.html.erb has :

<label>
<span>Home : </span>
<%= text_field "member_phone", "home_phone", :class =>
"input_text" %>

        &lt;/label&gt;

class MemberPhone < ActiveRecord::Base

belongs_to :member, :foreign_key => "member_id"

The foreign_key spec here is not required as member_id is the default.
It should not do any harm however.

end

class Member < ActiveRecord::Base
alias_attribute :family_member_id, :member_id

What is the purpose of the above line? Does the members table have a
column with one of those names? If so, why?

has_many :member_addresses , :foreign_key => "family_member_id"

has_many :member_phones , :foreign_key => "family_member_id"

The above line says that member_phones (not members) has a column
family_member_id. Has it?

Colin