On Jul 29, 9:06 am, Rick & Nellie Flower <[email protected]> wrote: > Chris -- > > one more question if you don't mind too much! So, I blew away everything and > started over this > time using just the command line tools w/o fiddling around (at least outside > of adding the enum > pieces -- which seem on the surface like they might plug into the > generator).. Below are the commands I use and works (sort-of) when using the > web-interface tohttp://localhost:3000/users/new > > However, I don't believe it's creating the associations correctly -- the > "has_one" is incorrect as it's > kicked out when issuing the initial migrate to setup the database.. Do I > need to put the has_one > in by hand or is my syntax messed up? I was looking over the api-docs and > thought i had it right > but perhaps not. Below are the commands I issued : >
> 1) rails new test > 2) rails generate scaffold user address:has_one acct_locked:boolean > family_id:integer is_profile_setup:boolean last_login:datetime > password:string security_question:string security_answer:string > username:string type:string > 3) rails generate model address user:references street:string city:string > state:string zip:string email:string phone:string > 4) bundle exec rake db:migrate has_one doesn't belong in your migration/scaffold stuff. Add it to the model later on. (belongs_to/references is the exception to this, because user belongs_to :blah actually requires adding a column to the users table whereas user has_one :blah doesn't) Fred > > I get this on step #4 above : > rake aborted! > An error has occurred, this and all later migrations canceled: > > undefined method `has_one' for > #<ActiveRecord::ConnectionAdapters::TableDefinition:0x007fd88525e148> > /Users/nrf/.rvm/gems/ree-1.8.7-2011.03/gems/activerecord-3.0.9/lib/active_r > ecord/connection_adapters/abstract/schema_definitions.rb:326:in > `method_missing' > > Ugg.. > > On Jul 28, 2011, at 11:50 PM, Chris Kottom wrote: > > > > > If you want to do revisions on existing tables (adding columns, changing > > data types, etc.) you can use migrations for that as well. Experiment on > > the command line with patterns like: > > > rails g migration add_columns_to_addresses column_1:string column_2:integer > > ... > > rails g migration remove_columns_from_addresses column_1:string > > column_2:integer ... > > > The generator will try to figure out what you're attempting to do if you > > give it some basic instructions and if what you want to do isn't too > > complicated. > > > On Fri, Jul 29, 2011 at 8:35 AM, Rick & Nellie Flower <[email protected]> > > wrote: > > Thanks for the reply Chris.. > > > I'll switch away from Camelcase.. I use that at work all day long (C++) so > > I'm used to looking at > > it. > > > I initially used the generator but when revising tables it didn't want to > > run anymore complaining > > some of the files were already there -- which is why I resorted to > > hand-edits. I'll do some more > > reading on what you suggested.. Thx! > > > -- Rick > > > On Jul 28, 2011, at 11:22 PM, Chris Kottom wrote: > > >> Are you not using generators for the initial creation of your model and > >> migration source files? I'm asking because I think I can count on one > >> hand the number of times I've ever written out a create_table function > >> myself. Your inputs from the command line should do all this for you > >> along with some of the work of setting up your model associations (e.g. > >> the belongs_to call in your Address class definition) and save you some > >> effort. If you're using the generators properly, you may never have to > >> touch the migration files for simpler applications. > > >> rails g scaffold user acctLocked:boolean familyId:integer > >> isProfileSetup:boolean ... > >> rails g model address user:references address:string city:string ... > > >> For more info: > >>http://guides.rubyonrails.org/getting_started.html > >>http://guides.rubyonrails.org/command_line.html#rails-generate > > >> One other small thing: you're writing your variable names using camel case > >> (lowerCaseWithCapitalsIndicatingWordBoundaries) whereas the more widely > >> recognized Ruby convention is to use all_lower_case_with_underscores. I > >> left your variable names as-is in the sample code above, but if it's code > >> that anyone else will ever see or work on, you might consider changing it. > > >> On Fri, Jul 29, 2011 at 4:43 AM, Rick & Nellie Flower <[email protected]> > >> wrote: > >> Ok.. Still working on this stuff.. I've got the t.reference in the > >> migration for the address class and moved the belongs_to and has_one in > >> the model classes as indicated (I didn't notice that!). > > >> I noticed in the association-basics that I should be putting a > >> create_table function (if that's what > >> it's called) in the CreateUsers class for Migrations but I'm concerned > >> about doing that since I'll be using the address class on more than just > >> the 'users' class -- does it really belong there or ?? > >> Perhaps I'm overthinking this.. ?? > > >> Below are the two class definitions for both the model & migration : > > >> class Address < ActiveRecord::Base > >> belongs_to :user > >> belongs_to :organization > >> belongs_to :supplier > >> end > > >> class CreateAddresses < ActiveRecord::Migration > > >> def self.up > >> create_table :addresses do |t| > >> t.string :address > >> t.string :city > >> t.string :state > >> t.string :zip > >> t.string :email > >> t.string :phone > >> t.references : users > > >> t.timestamps > >> end > >> end > > >> def self.down > >> drop_table :addresses > >> end > >> end > > >> ================================= > >> class User < ActiveRecord::Base > >> enum_attr :accountType, %w(regular admin site_admin), :init=>:regular > > >> has_one :name > >> has_one :address > >> has_one :organization > > >> end > > >> class CreateUsers < ActiveRecord::Migration > > >> def self.up > >> create_table :users do |t| > >> t.boolean :acctLocked > >> t.integer :familyId > >> t.boolean :isProfileSetup > >> t.datetime :lastLogin > >> t.string :password > >> t.string :securityQ > >> t.string :securityA > >> t.string :username > >> t.enum :accountType > > >> t.timestamps > >> end > > >> create_table :a > >> end > > >> def self.down > >> drop_table :users > >> end > >> end > > >> -- > >> 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 [email protected]. > >> To unsubscribe from this group, send email to > >> [email protected]. > >> For more options, visit this group > >> athttp://groups.google.com/group/rubyonrails-talk?hl=en. > > >> -- > >> 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 [email protected]. > >> To unsubscribe from this group, send email to > >> [email protected]. > >> For more options, visit this group > >> athttp://groups.google.com/group/rubyonrails-talk?hl=en. > > > -- > > 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 [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group > > athttp://groups.google.com/group/rubyonrails-talk?hl=en. > > > -- > > 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 [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group > > athttp://groups.google.com/group/rubyonrails-talk?hl=en. -- 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 [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

