J'ai un calendrier et une base de données d'équipes pour montrer les matchs de football. Je peux actuellement voir tous les appareils (index & show ..) et toutes les équipes (index seulement).Rails appartient à class_name avec les clés étrangères correctes?
create_table "fixtures", :force => true do |t|
t.integer "home_id"
t.integer "away_id"
t.date "date"
...
create_table "teams", :force => true do |t|
t.string "name"
...
Mon luminaire & Les modèles d'équipe sont présentés ci-dessous;
class Fixture < ActiveRecord::Base
belongs_to :home, :class_name => 'Team'
belongs_to :away, :class_name => 'Team'
...
class Team < ActiveRecord::Base
has_many :fixtures
...
je reçois l'erreur suivante lorsque vous essayez d'afficher une des équipes accessoires sur 'équipes # show page
Processing by TeamsController#show as HTML
Parameters: {"id"=>"3"}
Team Load (0.4ms) SELECT "teams".* FROM "teams" WHERE ("teams"."id" = 3) LIMIT 1
Fixture Load (0.3ms) SELECT "fixtures".* FROM "fixtures"
Fixture Load (0.3ms) SELECT "fixtures".* FROM "fixtures" WHERE ("fixtures".team_id = 3)
SQLite3::SQLException: no such column: fixtures.team_id: SELECT "fixtures".* FROM "fixtures" WHERE ("fixtures".team_id = 3)
Je comprends l'erreur dit qu'il cherche team_id dans les appareils mais n » t existe car j'ai un home_id et un away_id car chaque appareil contient toujours deux équipes, alors comment puis-je créer une recherche pour afficher les appareils d'une équipe?
Je ne pense pas que je comprenne la première façon, j'ai eu une erreur de méthode privée en utilisant le 2ème. Dans mon équipe, j'ai défilé show @team = Team.find (params [: id]) @fixtures = Fixture.all (: conditions => ['away_id =: id OU home_id =: id', {: id => @ team.id}]) fin ... Je l'ai eu en travaillant en changeant self.id à @ team.id –
@raphael_turtle J'avais envisagé la méthode allant dans le modèle d'équipe, mais je suppose que j'ai oublié de mentionner cela. Désolé - content que tu l'aies fonctionné quand même! –