Question

I did an application in rails and I'm trying to use a column type_id in relationship with my other table

My tables:

sinisters

+---+----------+---------+
|id | client   | type_id |
+---+----------+---------+
| 1 | Charles  |       1 |
| 2 | Montalvo |       1 |
| 3 | Gabriel  |       2 |
| 4 | Miguel   |       2 |
+---+----------+---------+

sinister_types

+----+--------+   
| id | name   |
+----+--------+ 
|  1 | DANGER |
|  2 | FIRE   |
+----+--------+ 

My controller:

@sinisters = Sinister.find(:all)

My models:

class Sinister < ActiveRecord::Base
   belongs_to :sinister_type
end

class SinisterType < ActiveRecord::Base
   has_many :sinisters
end

My view:

<% @sinisters.each |sinister| do %>
   <%= sinister.client %>
   <%= sinister.type.name %>
<% end %>

I want to show sinister types names.

I tried this code and got nothing:

<%= sinister.sinister_type.name %>

And also tried and got nothing

<%= sinister.type.try(:name) %>

Please somebody can help me?

Was it helpful?

Solution

Like @backpackerhh says, the default convention is sinister_type_id, not type_id. But if you want to override it, you need to specify :foreign_key.

Model :

class Sinister < ActiveRecord::Base
  belongs_to :sinister_type, :foreign_key => :type_id
end

class SinisterType < ActiveRecord::Base
   has_many :sinisters
end


Controller :

@sinisters = Sinister.find(:all)


View :

Not @sinisters.each |sinister| do, but @sinisters.each do |sinister|

<% @sinisters.each do |sinister| %>
   <%= sinister.client %> :
   <%= sinister.sinister_type.name %>
<% end %>

OTHER TIPS

I think your column on sinister table should be sinister_type_id (instead of type_id) or you need to specify the foreign key on your model.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top