hi,
i m new to ruby on rails, this question might sound stupid, but i m
really confused by the relationship between attributes of the model
and the column in that model table.
i have two tables ‘institutions’ and ‘alerts’ as below:
Institutions:
id site created_at updated_at
1 default null null
alerts
id institution_id name value
1 1 testname testvalue
the corresponding models are:
alert.rb
class Alert < ActiveRecord::Base
belongs_to :institution
attr_accessor :name, :value
def self.find_all(institution_id)
find(:all, :conditions => “institution_id = ‘#{institution_id}’”)
end
end
=================================================
institution.rb
class Institution < ActiveRecord::Base
has_one :alerts
def find_alerts(institution_id)
Alert.find_all(institution_id)
end
end
in app/views/institutions/ i have edit.html.erb
Editing institution
<% form_for(@institution) do |f| %>
<%= f.error_messages %>
<%= f.label :site %>
<%= f.text_field :site %>
<%= f.label :id %>
<%= f.text_field :id %>
<% for alert in @institution.find_alerts(@institution.id) %>
<%=h alert.name %>
<% end %><%= f.submit 'Update' %>
<% end %><%= link_to ‘Show’, @institution %> |
<%= link_to ‘Back’, institutions_path %>
however it can only show the institution’s info but not alert’s info.
from irb i tried:
a = Alert.find_all(1)
it showed me the correct record
but if i tried: a.name
it complained: NoMethodError: undefined method ‘name’, but i already
defined attr_accessor :name, :value in alert.rb, how come it still
complained?
Thanks!