I have a ‘tip’ model and a ‘team’ model. I am trying to create a form where a user will select the winning teams from several games. So far the user can select the winning teams and those id’s are being saved as foriegn keys in the Tip model (team_id). But after saving, I can’t go (for example ) @tip.team.name . What do I need to do ? How do I associate it (I though rails might magically do it if foriegn key is set), I am very new to rails. Thanks for any help !
class Tip < ActiveRecord::Base
attr_accessible :user_id, :team_id, :team, :game_id, :game, :comp, :comp_id
belongs_to :game
belongs_to :comp
belongs_to :team
end
class Team < ActiveRecord::Base
attr_accessible :name
has_many :tips
end
def create
params['game'][0].each do |key, value|
@tip = Tip.new
@tip.team_id = value
@tip.game_id = key
@tip.save
end
This last method may be messy too, but not sure how else to do it. There are several ‘tips’ that I want to create in the one form.
EDIT : To be clear I am quite sure it’s a one to many relationship, I am creating several tips in the one form but each tip only relates to one team.
EDIT : Actually my approach (which I’m sure is not close to the best way, did allow tip.team.name. It was a silly error relating to my test data that made me think otherwise.
if ur asscociation is “Tip belongs to a Team ” and “Team can have many Tips” then the association u defined in the question is correct.
if u want to created multiple tips when a team is created or add/edit/delete tips for a already created team, have a look at “accepts_nested_attributes_for” and https://github.com/ryanb/nested_form.
If u can get the team name using ‘@team.name’ then u should get it using “@tip.team.name”