I''m trying to do a basic relationship and it''s not working the way it should. The data model is obviously a test database as the fields are minimal. In irb I do the following:>> user = User.create(:name => "shawn")=> #<User:0x259ceac @errors=#<ActiveRecord::Errors:0x259c3a8 @errors={}, @base=#<User:0x259ceac ...>>, @attributes={"name"=>"shawn", "id"=>2}, @new_record=false>>> user.profile.create(:hello => "yeah")NoMethodError: undefined method `profile'' for #<User:0x259ceac> from /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:1792:in `method_missing'' from (irb):14 from :0>>I don''t understand why it doesn''t understand the relationship. Following is my ruby code: class User < ActiveRecord::Base has_one :profile end class Profile < ActiveRecord::Base belongs_to :user end ActiveRecord::Schema.define(:version => 3) do create_table "profiles", :force => true do |t| t.column "hello", :string t.column "user_id", :integer end create_table "users", :force => true do |t| t.column "name", :string end end I know I''m missing something basic to make this work. It''s driving me up the wall. Any help would be appreciated. -- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
Instead of ...
user.profile.create(:hello => "yeah")
try this...
user.profiles << Profile.new(:hello => "yeah")
(as in, adding a new member to the user.profiles collection, that new
member being a new instance of class Profile)
c.
Shawn S. wrote:> I''m trying to do a basic relationship and it''s not
working the way it
> should. The data model is obviously a test database as the fields are
> minimal.
>
> In irb I do the following:
>
>>> user = User.create(:name => "shawn")
> => #<User:0x259ceac @errors=#<ActiveRecord::Errors:0x259c3a8
> @errors={}, @base=#<User:0x259ceac ...>>,
@attributes={"name"=>"shawn",
> "id"=>2}, @new_record=false>
>>> user.profile.create(:hello => "yeah")
> NoMethodError: undefined method `profile'' for
#<User:0x259ceac>
> from
>
/usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:1792:in
> `method_missing''
> from (irb):14
> from :0
>>>
>
> I don''t understand why it doesn''t understand the
relationship.
> Following is my ruby code:
>
> class User < ActiveRecord::Base
>
> has_one :profile
>
> end
>
> class Profile < ActiveRecord::Base
>
> belongs_to :user
>
> end
>
> ActiveRecord::Schema.define(:version => 3) do
>
> create_table "profiles", :force => true do |t|
> t.column "hello", :string
> t.column "user_id", :integer
> end
>
> create_table "users", :force => true do |t|
> t.column "name", :string
> end
>
> end
>
> I know I''m missing something basic to make this work.
It''s driving me
> up the wall. Any help would be appreciated.
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk
-~----------~----~----~----~------~----~------~--~---
No, that gives the same errors as before:>> user=> #<User:0x259ceac @errors=#<ActiveRecord::Errors:0x259c3a8 @errors={}, @base=#<User:0x259ceac ...>>, @attributes={"name"=>"shawn", "id"=>2}, @new_record=false>>> user.profiles << Profile.new(:hello => "yeah")NoMethodError: undefined method `profiles'' for #<User:0x259ceac> from /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:1792:in `method_missing'' from (irb):18 from :0>>I also tried it with user.profile << and using create instead of new. Does the foreign key need to be defined in MySQL or does RoR understand the relationship through its belongs_to and has_one methods? Cayce Balara wrote:> Instead of ... > > user.profile.create(:hello => "yeah") > > try this... > > user.profiles << Profile.new(:hello => "yeah") > > > (as in, adding a new member to the user.profiles collection, that new > member being a new instance of class Profile) > > c. > > > Shawn S. wrote: >> I''m trying to do a basic relationship and it''s not working the way it >> should. The data model is obviously a test database as the fields are >> minimal. >> >> In irb I do the following: >> >>>> user = User.create(:name => "shawn") >> => #<User:0x259ceac @errors=#<ActiveRecord::Errors:0x259c3a8 >> @errors={}, @base=#<User:0x259ceac ...>>, @attributes={"name"=>"shawn", >> "id"=>2}, @new_record=false> >>>> user.profile.create(:hello => "yeah") >> NoMethodError: undefined method `profile'' for #<User:0x259ceac> >> from >> /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.14.4/lib/active_record/base.rb:1792:in >> `method_missing'' >> from (irb):14 >> from :0 >>>> >> >> I don''t understand why it doesn''t understand the relationship. >> Following is my ruby code: >> >> class User < ActiveRecord::Base >> >> has_one :profile >> >> end >> >> class Profile < ActiveRecord::Base >> >> belongs_to :user >> >> end >> >> ActiveRecord::Schema.define(:version => 3) do >> >> create_table "profiles", :force => true do |t| >> t.column "hello", :string >> t.column "user_id", :integer >> end >> >> create_table "users", :force => true do |t| >> t.column "name", :string >> end >> >> end >> >> I know I''m missing something basic to make this work. It''s driving me >> up the wall. Any help would be appreciated.-- Posted via http://www.ruby-forum.com/. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk -~----------~----~----~----~------~----~------~--~---
My mistake - I was thinking "has_many", didn''t connect that
it was
"has_one".
How about:
user.profile = Profile.new(:hello => "yeah")
c.
Shawn Szauksztun-Zvinis wrote:> No, that gives the same errors as before:
>
--
Posted via http://www.ruby-forum.com/.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk
-~----------~----~----~----~------~----~------~--~---