I am new to rails and have got very confused with the above. It was
working and then I made changes and it has gone downhill from there.
And I was not taking regular backups....
I have moved slightly outside of the conventions but it is not unknown
for a record type to be refered in another record in several fields -
users being a good example.
My schema file.
create_table "messages", :force => true do |t|
t.integer "from_user", :null => false
t.integer "to_user", :null => false
t.text "message"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "messages", ["from_user"], :name =>
"fk_messages_from_users"
add_index "messages", ["to_user"], :name =>
"fk_messages_to_users"
create_table "users", :force => true do |t|
t.string "user_id"
t.string "first_name"
t.string "surname"
etc etc
My model files
class Message < ActiveRecord::Base
belongs_to :user_from,
:class_name => "User",
:foreign_key => "from_user"
belongs_to :user_to,
:class_name => "User",
:foreign_key => "to_user"
validates_presence_of :message
end
class User < ActiveRecord::Base
has_many :user_from,
:class_name => "Message",
:foreign_key => "from_user"
has_many :user_to,
:class_name => "Message",
:foreign_key => "to_user"
etc etc
I made changes to user looking at various google results. Previous I
simply had
class User < ActiveRecord::Base
has_many :messages
etc etc
The controller action.
def my_messages
user = User.find(session[:userid])
@first_name = user.first_name
@messages = Message.paginate(:page => params[:page], :per_page => 10,
:conditions => ["from_user = ? or to_user = ?",
session[:userid],
session[:userid]],
:order => "created_at DESC")
@message = Message.new(params[:message])
@message.from_user = user
@message.to_user = User.find(1)
if request.post? and @message.save
@message = Message.new()
@messages = Message.paginate(:page => params[:page], :per_page =>
10,
:conditions => ["from_user = ? or to_user = ?", session
[:userid], session[:userid]],
:order => "created_at DESC")
end
And this is where I get confused. if I change the two lines above
@message.from_user = user
@message.to_user = User.find(1) # I know its hard coded but that
is the least of my worries
to
@message.from_user = session[:userid]
@message.to_user = 1
then I get expected results (ie value is 6) but
message.from_user.first_name will give an undefined method error.
If I use the former code then the value of from_user is 1 rather than
6. I have not a clue where it gets 1 from.
So, in summary, I have not got this. Any help appreciated.
Regards,
john
--~--~---------~--~----~------------~-------~--~----~
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?hl=en
-~----------~----~----~----~------~----~------~--~---