I just started learning ruby on rails coming from php and mysql worlds.
The tutorial are getting really confusing!!! According to this Active Record Migrations — Ruby on Rails Guides if you want to add foreign
key to a model it is not possible unless you use SQL format and
explicitly tell it where it is.
Now which tutorial i am suppose to believe??? Also if the association
together does it return the entire order rows or just one item of it.
and if i look in a db_migrate file why is there no id field already in
the file? Where does it get created?
Thanks but its a bit confusing coming from other language.
On Jul 12, 2012, at 10:27 AM, Jean-Sbastien D. wrote:
Hi everyone,
I just started learning ruby on rails coming from php and mysql worlds.
The tutorial are getting really confusing!!! According to this http://guides.rubyonrails.org/migrations.html if you want to add foreign
key to a model it is not possible unless you use SQL format and
explicitly tell it where it is.
I think that’s referring to actual DB-enforced foreign key constraints.
ActiveRecord provides a lot of helpful methods in the associations that
basically mimc what a traditional fk would do, but at the Ruby level.
I would follow this until you feel some pain that it doesn’t solve. If
you find that a real fk is the only way, look at the Foreigner gem,
which is an ActiveRecord extension that wraps real DB key constraints.
Now which tutorial i am suppose to believe??? Also if the association
together does it return the entire order rows or just one item of it.
and if i look in a db_migrate file why is there no id field already in
the file? Where does it get created?
Read carefully through the associations guide. The ActiveRecord
associations are deep and powerful. Also read through the migrations
guide. The id, created_at, and updated_at columns are all “assumed” in
any migration, unless you add some flags to suppress them when making
the migration.
Thanks but its a bit confusing coming from other language.
But so worth it. I just spent all of yesterday untwisting some PHP I
wrote in 2004. Fun? No, not really.
On Jul 12, 2012, at 10:58 AM, Jean-Sbastien D. wrote:
you find that a real fk is the only way, look at the Foreigner gem,
guide. The id, created_at, and updated_at columns are all “assumed” in
db:migrate to refresh with the newest options, this doesnt seem to work.
What would be my other option, and there are over 50 model so i already
try rake db:reset but that didn’t do anything other than resetting my
data.
If you read through the migrations guide, you will learn about rake
db:rollback, which will step backward through your migrations. You can
then hand-edit the migrations, delete the ones that have rolled back and
generate new ones, or some combination of those. Just don’t remove an
already-run migration without rolling it back first.
On Jul 12, 2012, at 10:27 AM, Jean-Sbastien D. wrote:
Hi everyone,
I just started learning ruby on rails coming from php and mysql worlds.
The tutorial are getting really confusing!!! According to this http://guides.rubyonrails.org/migrations.html if you want to add foreign
key to a model it is not possible unless you use SQL format and
explicitly tell it where it is.
I think that’s referring to actual DB-enforced foreign key constraints.
ActiveRecord provides a lot of helpful methods in the associations that
basically mimc what a traditional fk would do, but at the Ruby level.
I would follow this until you feel some pain that it doesn’t solve. If
you find that a real fk is the only way, look at the Foreigner gem,
which is an ActiveRecord extension that wraps real DB key constraints.
Now which tutorial i am suppose to believe??? Also if the association
together does it return the entire order rows or just one item of it.
and if i look in a db_migrate file why is there no id field already in
the file? Where does it get created?
Read carefully through the associations guide. The ActiveRecord
associations are deep and powerful. Also read through the migrations
guide. The id, created_at, and updated_at columns are all “assumed” in
any migration, unless you add some flags to suppress them when making
the migration.
Thanks but its a bit confusing coming from other language.
But so worth it. I just spent all of yesterday untwisting some PHP I
wrote in 2004. Fun? No, not really.
Walter
Thanks I appreciate!
I have one last questions!!
Because i started recently and not on a production server for what i am
building. I created rought models with bunch of fields, and did rake
db:migrate. So now they are created but I want to take those field out.
How should I proceed?? I would like to go into the db/folder find the
model modify it to what i needs exactly then was hoping to do rake
db:migrate to refresh with the newest options, this doesnt seem to work.
What would be my other option, and there are over 50 model so i already
try rake db:reset but that didn’t do anything other than resetting my
data.
On Jul 12, 2012, at 10:58 AM, Jean-Sbastien D. wrote:
you find that a real fk is the only way, look at the Foreigner gem,
guide. The id, created_at, and updated_at columns are all “assumed” in
db:migrate to refresh with the newest options, this doesnt seem to work.
What would be my other option, and there are over 50 model so i already
try rake db:reset but that didn’t do anything other than resetting my
data.
If you read through the migrations guide, you will learn about rake
db:rollback, which will step backward through your migrations. You can
then hand-edit the migrations, delete the ones that have rolled back and
generate new ones, or some combination of those. Just don’t remove an
already-run migration without rolling it back first.
Walter
Is there a way for me to select one specifically something like this
wrote in 2004. Fun? No, not really.
db:migrate. So now they are created but I want to take those field out.
How should I proceed?? I would like to go into the db/folder find the
model modify it to what i needs exactly then was hoping to do rake
db:migrate to refresh with the newest options, this doesnt seem to work.
What would be my other option, and there are over 50 model so i already
try rake db:reset but that didn’t do anything other than resetting my
data.
If you read through the migrations guide, you will learn about rake db:rollback,
which will step backward through your migrations. You can then hand-edit the
migrations, delete the ones that have rolled back and generate new ones, or some
combination of those. Just don’t remove an already-run migration without rolling
it back first.
That can be done but it is often better to write a new migration to
remove the stuff you have decided you did not need after all.
Rollback is fine if you make a migration, run it, but then realise
that it was a bad idea and want to go back to the previous one and
remove the migration. For any more complex situation I would advise
writing a new migration to undo the previous one instead. Otherwise
it is easy to get confused about the state of the database.
Also, as well as looking through the guides I suggest working right
through a tutorial such as railstutorial.org, which is free to use
online, to get the basics of Rails.
On Jul 12, 2012, at 11:18 AM, Jean-Sbastien D. wrote:
rake db:rollback YYYYMMDDHHMMSS_model.rb
I don’t know specifically – what do the guides say? I’ve only ever
stepped back one or two at a time, made my adjustments, then run rake
db:migrate again to roll back up to the current stage.
Walter
Thanks I appreciate, i find it weird that you must make a new migration
everytime you made a mistake, its seem to be a lot of overhead in
compilation time. Maybe something that future rails should invest. Who
knows I just started learning ruby.
On Jul 12, 2012, at 11:18 AM, Jean-Sbastien D. wrote:
rake db:rollback YYYYMMDDHHMMSS_model.rb
I don’t know specifically – what do the guides say? I’ve only ever
stepped back one or two at a time, made my adjustments, then run rake
db:migrate again to roll back up to the current stage.
Walter
Thanks I appreciate, i find it weird that you must make a new migration
everytime you made a mistake, its seem to be a lot of overhead in
compilation time. Maybe something that future rails should invest. Who
knows I just started learning ruby.
Thanks
One more questions…
If i have two tables it should be declared has follow to have my foreign
key
CUSTOMER ORDER
first customer_id
last pay_to
… …
Correct then in the model i should specify the relation ship correct?
On Jul 12, 2012, at 11:18 AM, Jean-Sbastien D. wrote:
rake db:rollback YYYYMMDDHHMMSS_model.rb
I don’t know specifically – what do the guides say? I’ve only ever
stepped back one or two at a time, made my adjustments, then run rake
db:migrate again to roll back up to the current stage.
Thanks I appreciate, i find it weird that you must make a new migration
everytime you made a mistake, its seem to be a lot of overhead in
compilation time. Maybe something that future rails should invest. Who
knows I just started learning ruby.
What compilation time? A migration is only loaded and run when you ask
for it.
On Jul 12, 2012, at 12:30 PM, Jean-Sbastien D. wrote:
Thanks I appreciate, i find it weird that you must make a new migration
everytime you made a mistake, its seem to be a lot of overhead in
compilation time. Maybe something that future rails should invest. Who
knows I just started learning ruby.
The migrations are typically only run during development, and then you
can install from the schema (which maintains a “current state” of the
database at all times) when you get to production. Migrations are a
great way to build an application organically, because you can roll them
back and undo a spike you tried and didn’t like. Use them like Git for
your database.
Correct then in the model i should specify the relation ship correct?
Can you explain the above again, I don’t understand what you are
trying to achieve. Also it is best to talk first about models and
relationships, (has_many, belongs_to and so on) then the table
requirements will follow from that.
So first tell us what the models are and what the relationships are.
Can you explain the above again, I don’t understand what you are
CUSTOMER ORDER
CUSTOMER ORDER
first_name price
last_name proceed_at
password
emails
Now in models I would have to say
Customer belongs to order
Order has customer
I think that should be customer has_many orders and order belongs_to
customer. The words make some reasonable sense in english.
Now my main questions I understand I dont define customer_id and
order_id in customer and order table because its already assume to have
an id key when created. But in ORDER model should I define
customer_id:integer and in model say
ORder customer_id: has customer. To let it know that this field is
actually a foreign key?
Since order belongs_to customer then the orders table (note the plural
name for the table) should have a customer_id column. You don’t need
to tell rails that it is a foreign key, it will know that from the
model relationships. To specify it in the migration for orders you
can say (as is mentioned in the migrations guide).
t.references :customer
or
t.integer :customer_id
As I think I said previously if you work right through some tutorials
all this should become clear.
On Thursday, July 12, 2012 12:37:33 PM UTC-4, Walter Lee D. wrote:
db:migrate again to roll back up to the current stage.
install from the schema (which maintains a “current state” of the database
at all times)
This is not true. Lets say you have a working system, being used by
thousands of users. The database has enough data that a backup/restore
takes half a day. Then you need to add a new feature that requires 3
new
tables, and new columns on an existing table. How are you supposed to
do
this without running a migration against the production system?
stepped back one or two at a time, made my adjustments, then run rake
The migrations are typically only run during development, and then you can
install from the schema (which maintains a “current state” of the database
at all times)
This is not true. Lets say you have a working system, being used by
thousands of users. The database has enough data that a backup/restore
takes half a day. Then you need to add a new feature that requires 3 new
tables, and new columns on an existing table. How are you supposed to do
this without running a migration against the production system?
I suspect Walter meant “during the development phase” rather than “in
development mode”. Migrations are applied to the production database
during development.
Correct then in the model i should specify the relation ship correct?
Can you explain the above again, I don’t understand what you are
trying to achieve. Also it is best to talk first about models and
relationships, (has_many, belongs_to and so on) then the table
requirements will follow from that.
So first tell us what the models are and what the relationships are.
Colin
Well i am from MySQL world. I am use to a database has follow
In MySQL you would have has follow: PK customerID, orderID, FK
order(customerID) to customer(customerID)
In Rails if I understood I create has follow
CUSTOMER ORDER
first_name price
last_name proceed_at
password
emails
Now in models I would have to say
Customer belongs to order
Order has customer
Now my main questions I understand I dont define customer_id and
order_id in customer and order table because its already assume to have
an id key when created. But in ORDER model should I define
customer_id:integer and in model say
ORder customer_id: has customer. To let it know that this field is
actually a foreign key?
Can you explain the above again, I don’t understand what you are
CUSTOMER ORDER
CUSTOMER ORDER
first_name price
last_name proceed_at
password
emails
Now in models I would have to say
Customer belongs to order
Order has customer
I think that should be customer has_many orders and order belongs_to
customer. The words make some reasonable sense in english.
Now my main questions I understand I dont define customer_id and
order_id in customer and order table because its already assume to have
an id key when created. But in ORDER model should I define
customer_id:integer and in model say
ORder customer_id: has customer. To let it know that this field is
actually a foreign key?
Since order belongs_to customer then the orders table (note the plural
name for the table) should have a customer_id column. You don’t need
to tell rails that it is a foreign key, it will know that from the
model relationships. To specify it in the migration for orders you
can say (as is mentioned in the migrations guide).
t.references :customer
or
t.integer :customer_id
As I think I said previously if you work right through some tutorials
all this should become clear.
Colin
Sorry here a question in term of modeling!! BTW thanks I am learning a
lots with your comments
But I just want to make sure I get the association concept understood
well. I place a question few days ago on this links http://railsforum.com/viewtopic.php?pid=153916#p153916 but don’t seem to
have quick Answer. I just wanna make sure I understand the concept of
association compared to php
order_id in customer and order table because its already assume to have
lots with your comments
But I just want to make sure I get the association concept understood
well. I place a question few days ago on this links http://railsforum.com/viewtopic.php?pid=153916#p153916 but don’t seem to
have quick Answer. I just wanna make sure I understand the concept of
association compared to php
It is no good just posting a link to a thread that appears to have
already been answered. If you have a specific still unanswered
question then post it here. However as I have said twice before you
really should work through some tutorials to get the basics rather
than asking such questions here. Once you have done that the answers
will mostly become obvious to you.
order_id in customer and order table because its already assume to have
lots with your comments
But I just want to make sure I get the association concept understood
well. I place a question few days ago on this links http://railsforum.com/viewtopic.php?pid=153916#p153916 but don’t seem to
have quick Answer. I just wanna make sure I understand the concept of
association compared to php
It is no good just posting a link to a thread that appears to have
already been answered. If you have a specific still unanswered
question then post it here. However as I have said twice before you
really should work through some tutorials to get the basics rather
than asking such questions here. Once you have done that the answers
will mostly become obvious to you.
Colin
Oh Thanks didn’t ice someone already posted an answer. Well these are
all my questions, I thanks everyone!!
class MusicInterest < ActiveRecord::Base
has_many :music_interest_managers
has_many :clients, through => :music_interest_managers
end
class MusicInterestManager < ActiveRecord::Base
belongs_to :music_interests
How many music_interests does it belong to. The fact that you have
used the plural suggests it belongs to several, but that does not seem
likely.
uninitialized constant ActivitiesManager::Customers
ActivitiesManager and Customers? Where did they come from?